所謂尾遞回,return陳述句后面跟的一定沒有新的變數,只需要一個堆疊,只需要遞回呼叫它本身,所有的運算操作全部放在尾遞回函式的引數串列中進行,
例:
def tailrecsum(x, running_total=0):
if x == 0:
return running_total
else:
return tailrecsum(x - 1, running_total + x)
//理論上類似上面:tailrecsum(5, 0)
tailrecsum(4, 5)
tailrecsum(3, 9)
tailrecsum(2, 12)
tailrecsum(1, 14)
tailrecsum(0, 15)
15
事實上,每次進行尾遞回,都是具體數值在運算,之所以叫做尾遞回,因為此函式一直在呼叫自己,期待著最尾部的結束條件,再次強調,呼叫的程序中沒有使用新的未知變數,不需要同遞回一樣開辟新的記憶體,
所以,使用尾遞回思想編程解決問題時,要把最尾部的結束條件確定好,把尾遞回到達結束條件時return出去的東西寫成我們期待尾遞回計算出的東西,把具體的操作放在函式的引數上實作,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/116905.html
標籤:其他
上一篇:快速排序
下一篇:GNS1.46鏡像怎么添加呢
