最简单的递归会爆炸,稍微改进一下,用一个变量数组存放出现过的数,减少递归的调用。
#include <iostream>
#include <cstdio>
using namespace std;
//int Fibonacci(int n);
long Fibonacci(int n);
long tempResult[10001]={0};
int main()
{
//freopen("in.txt","r",stdin);
int n;
scanf("%d",&n);
printf("%ld\n",Fibonacci(n));
return 0;
}
/*int Fibonacci(int n)
{
if (n==1||n==2)
{
return 1;
}else
{
return Fibonacci(n-1)+Fibonacci(n-2);
}
}
*/
long Fibonacci(int n)
{
if (n == 0)
return 0;
else if (n == 1)
return 1;
else if (n > 1)
{
if(tempResult[n] != 0)
return tempResult[n];
else
{
tempResult[n] = Fibonacci(n - 1) + Fibonacci(n - 2);
return tempResult[n];
}
}
}