我不明白为什么在输入5时会返回5? 每次函数可以减法时它返回1吗?然后添加所有那些?
#include <iostream>
using namespace std;
int Fibonacci(int);
int Fibonacci(int x)
{
if (x == 0) return 0; // Stopping conditions
if (x == 1) return 1;
return Fibonacci(x - 1) + Fibonacci(x - 2);
}
int main() {
int num;
cin >> num;
cout << Fibonacci(num) << endl;
return 0;
}
答案 0 :(得分:1)
为清楚起见,使用函数
auto F( int x )
-> int
{ return (x <= 1? x : F(x-2)+F(x-1)); }
F(5)
→F(3)+ F(4)
→(F(1)+ F(2))+ F(4)
→(1 + F(2))+ F(4)
→(1 +(F(0)+ F(1)))+ F(4)
→(1 +(0 + F(1)))+ F(4)
→(1 +(0 + 1))+ F(4)
→(1 + 1)+ F(4)
→2 + F(4)
→2 +(F(2)+ F(3))
等等...
答案 1 :(得分:0)
0,1,1,2,3,5是计算得到5的值。当被要求任何元素但前两个(这里索引为子0和子1)时,它会添加前两个元素(那些减法是序列的索引,而不是值)。子零设置为0,子参数设置为1。