2012-02-19 50 views
0

可能重複:
Using Recursion to raise a base to its exponent - C++有人可以解釋這段代碼嗎? - C++

int raisingTo(int base, unsigned int exponent) 
{ 
    if (exponent == 0) 
    return 1; 
    else 
    return base * raisingTo(base, exponent - 1); 
} 

我寫此代碼爲提高指數使用由值從main()傳遞的值的基準值。這個函數使用遞歸來做到這一點。有人可以解釋它在每次調用它時如何返回一個值嗎?我需要詳細解釋這段代碼。

+4

您是否試過在紙上做? – 2012-02-19 16:20:51

+0

@可編寫代碼的程序,但你不明白對新程序員來說並不罕見 – 2012-02-19 16:20:57

+0

從學校作業中複製代碼算「寫它」嗎? – Alan 2012-02-19 16:24:12

回答

0

最好通過手動進行迭代來說明(如評論中所建議的)。假設我們有base = 2exponent = 2

  • 在第一次迭代期間,函數返回2 * (whatever function yields when called with the arguments 2 and (2 - 1), which is 1)
  • 帶參數2和1的第二次迭代獲得結果2 * (whatever the next iteration with arguments 2 and 0 returns)
  • 的THRID迭代也將是最後一個,因爲功能設置,返回1,當指數爲0

現在,我們有充分的鏈2 * 2 * 1,因此計算的結果是4.

+0

非常感謝你馬爾科姆! – 2012-02-19 16:43:19

+0

@ Malcolm.I現在明白了。謝謝馬爾科姆。 – 2012-02-19 16:47:09

4

我們使用等式:x^n = x * x^(n-1)對所有實數都是如此。

所以我們用它來創建遞歸函數。遞歸的底部是當指數== 0.

例如2^4 = 2 * 2^3; 2^3 = 2 * 2^2; 2^2 = 2 * 2^1; 2^1 = 2 * 2^02^0 = 1

+4

+1,你寫的代碼OP「寫」,所以你到第二級;-) – 2012-02-19 16:28:53

+0

@ MichaelKrelin黑客。謝謝你最啓發性的評論。如果你願意回答我的問題,請做。謝謝。 – 2012-02-19 16:42:52

相關問題