递归、递推计算斐波那契数列第n项的值:
1 #include <stdio.h> 2 long long fact(int n); //【递推】计算波那契数列第n个数 3 long long fact2(int n);//【递归】 4 int main(int argc, char *argv[]) 5 { 6 int i=1; 7 while(i<=10) 8 { 9 printf("%d %I64d %I64d\n",i,fact(i),fact2(i)); 10 i++; 11 } 12 return 0; 13 } 14 long long fact(int n) //【递推】计算波那契数列第n个数 15 { 16 long long a,b,c; 17 a=1; 18 b=1; 19 if(n==1||n==2) return 1; 20 else if(n<1) return -1; 21 else 22 { 23 n=n-2; 24 while(n>0) 25 { 26 c=a+b; 27 a=b; 28 b=c; 29 n--; 30 } 31 return c; 32 } 33 } 34 long long fact2(int n)//【递归】 35 { 36 if(n<0) return -1; 37 else if(n==1||n==2) return 1; 38 else 39 { 40 return fact2(n-1)+fact2(n-2); 41 } 42 }
时间: 2024-10-10 03:47:20