ntjm.net
当前位置:首页 >> C语言编程:用递归与非递归求n! >>

C语言编程:用递归与非递归求n!

由于长整型数据有限制 这个阶层算不了多大的 测试的时候就用一位数吧如果不能用再追问我吧①递归#include "stdio.h"#include "conio.h"main(){ int input; long result; long f(int n); scanf("%d",&input); result = f(input); printf("%d! = %ld",

非递归:#include void main(){ int i,t=0; for (i=1;iint suan(int n){ if(n==1){ return n; } return n+suan(n-1);} void main(){ int n=1; suan(n);}

#include <stdio.h>//递归求n! int func1(int n){ if(n==1) return 1; else return func1(n-1)*n;}//递归求Fibonacci int func2(int n){ if(n==1 || n==2) return 1; else return func2(n-1)+func2(n-2);}//非递归求n! int func3(int n){ int i,sum=1; for(i=1;i<=n;i++) {

int fac(int n) //非递归 {int f=1; for(;n;)f*=n--; return f; } int fac1(int n) //递归 {if(n==0)return 1; return n*fac1(n-1); }

这样子写程序就可以了,vc6下验证成功#includevoid main(){ long int sum=0; long int count(int n); int n; printf("input n="); scanf("%d",&n); printf("result is %ld\n",count(n));}long int count(int n){ if(n>1) return n*count(n-1); else return 1;}

//递归 long Recursion(int n) { return n 0; i--) r *= i; return r; }

#include<stdio.h> unsigned double fact(unsigned double n) { if (n==0) return 1; return n*fact(n-1); } void main() { printf("%d",fact(10)); }

#include <stdio.h>int rf(int n){ return n > 0 ? n * rf(n-1) : 1;}int f(int n){ int k = 1; while(n > 0) k *= n--; return k;}int main(){ int n; scanf("%d", &n); printf("递归:%d\n", rf(n));printf("非递归:%d\n", f(n));}

1.#include "stdio.h"//#define RECURSION 1#ifdef RECURSIONlong fact(int n){ if(n<1) return 1; return n*fact(n-1);}#elselong fact(int n){ long t=1; for(int i=2;i<=n;i++) t*=i; return t;}#endifmain(){ long s=0; for(int i=1;i<=10;i++) s+=fact(i); printf("%

int math_n(int n) { if(n == 1) return 1; else return n*math_n(n-1); }

网站首页 | 网站地图
All rights reserved Powered by www.ntjm.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com