// right = F(n-2) , return value = F(n-1)
int fibonacci_R(int n, int& right)
{
if(2 == n)
{
right = 1;
return 1;
}
int t = 0;
right = fibonacci_R(n-1, t);
return right + t;
}
// avoid calculating repeatly
int fibonacci(int n)
{
if (0 == n) return 1;
if (1 == n) return 1;
int right;
int x = fibonacci_R(n, right);
return x + right;
}
int main(int argc, char* argv[])
{
for (int i = 0; i < 10; ++i)
cout<<fibonacci(i)<<endl;
return 0;
}
Fibonacci数列的递归优化
最新推荐文章于 2022-03-27 19:49:57 发布