我有一個函數有兩個遞歸調用,我試圖將它轉換爲迭代函數。我已經知道我可以在哪裏用一個電話很容易地做到這一點,但我無法弄清楚如何合併另一個電話。將具有兩個遞歸調用的函數轉換爲一個迭代函數
功能:
def specialMultiplication(n):
if n < 2:
return 1
return n * specialMultiplication(n-1) * specialMultiplication(n-2)
如果我只是其中之一,這將是非常容易:
def specialMult(n, mult = 1):
while n > 1:
(n, mult) = (n-1, n * mult) # Or n-2 for the second one
return mult
我只是無法弄清楚如何添加第二個電話中總體上得到正確的答案。謝謝!
你的算法的運行時間的一個簡化版本是指數。無論是遞歸實現還是迭代實施,只會以一個常數因子改變運行時間。 – merlin2011
謝謝@ merlin2011。我現在看到了。試圖找出如何將其轉換爲動態樣式。 – firelover
Blckknght的答案是應該以線性時間運行的DP解決方案。 – merlin2011