f(n) = 0 , n = 0;
= 1 , n = 1;
= f(n-1)+f(n-2), n >=2;
如果使用递归,代码比较简单,但是递归深度太大,容易造成线程栈溢出以及重复计算太多,效率极低
循环代码如下:
#include<iostream>
using namespace std;
/*
斐波那契数列
可以用递归或者循环,但是递归在n很大的时候效率太低
*/
long long Fibonacci(size_t n)
{
int arr[] = { 0, 1 };
int FinumN_1 = 1;
int FinumN_2 = 0;
int FinumN = 0;
if (n < 2)
{
return arr[n];
}
for (size_t i = 2; i <= n; i++)
{
FinumN = FinumN_1 + FinumN_2;
FinumN_2 = FinumN_1;
FinumN_1 = FinumN;
}
return FinumN;
}
void main(int argc,void *argv)
{
size_t n = 35;
cout << Fibonacci(n) << endl;
system("pause");
}