C++ 又一個例子

2023-03-20 15:52 更新

前面的例子中,我使用了臨時變量,這樣便于把步驟講清楚,代碼也容易調(diào)試,但是我們也可以少寫幾行:

int factorial (int n) {
  if (n == 0) {
    return 1;
  } else {
    return n * factorial (n-1);
  }
}

從現(xiàn)在開始,我傾向于使用更簡潔的版本,但我仍然建議你在開發(fā)過程中使用更清晰的版本。當(dāng)代碼正常工作后,如果你能感到鼓舞的話,可以收緊代碼。

除了階乘,另一個經(jīng)典的例子是遞歸定義的數(shù)學(xué)函數(shù)fibonacci,它定義如下:

fibonacci(0) = 1
fibonacci(1) = 1
fibonacci(n) = fibonacci(n ? 1) + fibonacci(n ? 2);

翻譯為C++,就是:

int fibonacci (int n) {
  if (n == 0 || n == 1) {
    return 1;
  } else {
    return fibonacci (n-1) + fibonacci (n-2);
  }
}

如果你想跟蹤這個函數(shù)的執(zhí)行流程,即使很小的n值,都會讓你的頭爆炸了。但是根據(jù)“思路跳躍”方法,假定兩個遞歸調(diào)用工作正常(是的,可以做兩次遞歸調(diào)用),然后,很明顯將它們加起來就是正確結(jié)果了。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號