斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
1.普通斐波那契数列解法
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 5 int Fibonacci(int n) 6 { 7 if(n==1||n==2) 8 return 1; 9 else 10 return Fibonacci(n-1)+Fibonacci(n-2); 11 } 12 13 int main() 14 { 15 for(int i=1;i<100;i++) 16 { 17 printf("%d ",Fibonacci(i)); 18 } 19 printf(" "); 20 return 0; 21 }
2.记忆性递归 用一个数组保存求得的结果 适用于数据项比较大的情况
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 5 int f[100]; 6 7 int Fibonacci(int n) 8 { 9 if(n==1||n==2) 10 return f[n]=1; 11 else 12 { 13 if(f[n]==0) //没求解过 14 return f[n]=Fibonacci(n-1)+Fibonacci(n-2); 15 else //求解过,直接取保存的结果值 16 return f[n]; 17 } 18 } 19 20 int main() 21 { 22 printf("%d ",Fibonacci(1000)); //求第1000项结果 非常快 23 return 0; 24 }