斐波那契数列问题

1、求斐波那契数列第n项

(1)非递归

fabonacci(int n) { int f1 = 1,f2 = 1,f3; for(i = 2;i <n;i++) { f3 = f1 +f2; f1 = f2; f2 = f3; } printf("第n项是%d",f3); } 

(2)递归

fabonacci(int n) { int i; for(i = 1;i <= n;i++) { if(i =1 || i = 2 ) return 1; else return fabonacci(n-1)+fabonacci(n-2); } } 

 

(3)公式法

int fabonacci(int n) { return (pow((1+sqrt(5.0))/2,n)-pow((1-sqrt(5,0))/2,n))/sqrt(5.0); } 

 

2、求斐波那契数列数列前n项

(1)用数组

 

fabonacci(int n) { int i; static int a[n] = {1,1}; for(i = 2;i <n;i++) a[i] = a[i-1] + a[i-2]; for(i = 0;i <n;i++) printf("%d",a[i]); } 

你可能感兴趣的:(斐波那契数列问题)