我有一個串列,可以包含兩個自然數或兩個以上的串列。這些串列中的每一個還包含兩個整數或兩個進一步的串列,依此類推。ei: [[4, 7], [[3, 5], [9, 1]]] 我需要使用遞回來計算樹中所有數字的總和并撰寫以下代碼:
def getSum(tree):
sum = 0
for elemente in tree:
if type(elemente)==int:
sum = elemente
else:
sum = getSum(elemente)
return sum
代碼不起作用,因為它總是將 sum 回傳到 12,所以我的問題是,如何使它作業但仍然使用遞回?。我沒有正確識別基本情況嗎?
uj5u.com熱心網友回復:
您可以這樣做:
def getSum(tree):
sum = 0
for elemente in tree:
if type(elemente)==int:
sum = elemente
else:
sum = getSum(elemente)
return sum
tree = [[4, 7], [[3, 5], [9, 1]]]
print(getSum(tree))
29
或者,您可以跟蹤sum遞回回圈的外部。
例如像這樣:
def getSum(tree, sum = None):
sum = sum or 0
for elemente in tree:
if type(elemente)==int:
sum = elemente
else:
sum = getSum(elemente, sum)
return sum
tree = [[4, 7], [[3, 5], [9, 1]]]
print(getSum(tree))
29
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/383342.html
上一篇:遞回遍歷家譜時遇到問題
