我不明白爲什麼這返回5時輸入5? 每次函數都可以進行減法時,是否返回1?然後添加所有這些?C++遞歸,我不明白
#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;
}
解決此類問題的正確工具是您的調試器。在*堆棧溢出問題之前,您應該逐行執行您的代碼。如需更多幫助,請閱讀[如何調試小程序(由Eric Lippert撰寫)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。至少,您應該\編輯您的問題,以包含一個[最小,完整和可驗證](http://stackoverflow.com/help/mcve)示例,該示例再現了您的問題,以及您在調試器。 –
你停止條件返回一個你想要的索引的錯誤結果 – StoryTeller
@StoryTeller停止條件有意義索引是基於零的,但是一個零點是零,而不是一個。子1是1,子2也是,這意味着子5應該是5。 –