斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
代码实现:
#include<iostream>
using namespace std;
//1、1、2、3、5、8、13、21、34、……
int Fibonacci_1(int n) //递归
{
if(n == 1 || n == 2)
return 1;
else
{
return Fibonacci_1(n-1) + Fibonacci_1(n-2);
}
}
int Fibonacci_2(int n) //循环
{
if (n ==1 || n == 2)
{
return 1;
}
int a = 1;
int b = 1;
int tmp;
for(int i=3;i<=n;++i)
{
tmp = a + b;
a = b;
b = tmp;
}
return tmp;
}
int main()
{
cout<<Fibonacci_1(3)<<endl;
cout<<Fibonacci_1(5)<<endl;
cout<<Fibonacci_2(3)<<endl;
cout<<Fibonacci_2(5)<<endl;
}
总结:尽量使用循环的写法,因为递归的那个时间复杂度太大了,如果参数给定的值很大,很明显可以看出循环要快。
还有,如果在题目中遇到所要求的数比较依赖于前面的结果,就考虑斐波那契数列。