當f(6)被調用時,根據函數定義,它會進一步調用f(5)、f(4)和f(3)。而每一個這些調用又會根據同樣的規則進一步展開。下麵是展開的詳細過程:
f(6)調用了:
f(5)
f(4)
f(3)
f(5)調用了:
f(4)
f(3)
f(2)
f(4)調用了:
f(3)
f(2)
f(1)
f(3)調用了:
f(2)
f(1)
f(0)
如果我們計算每一層的調用次數,我們會發現:
f(6)直接導致3次調用。
f(5)會導致再次調用f(4), f(3), 和f(2)。
f(4)會導致調用f(3), f(2), 和f(1)。
f(3)會導致調用f(2), f(1), 和f(0)。
由於f(2), f(1), 和f(0)都會直接返回而不會進一步調用f(n),我們可以把它們看作是基礎情況,不會增加額外的調用。
這樣,遞歸調用的總次數是所有這些調用累加起來的結果。具體到f(6)的計算,我們可以看到調用的“樹”迅速增長,每一層的調用都依賴於之前的調用。通過具體展開每個調用,我們可以數出總共有25次函數調用,包括初始的f(6)調用在內。