[英]How to grow and return a list from inside a recursive function in python
我對Pascal的三角形有一個遞歸的解決方案,但是它返回所請求的三角形的行,而不是它前面的所有行。 我想知道是否有一種方法可以檢索所有行,因為它們是從基本情況下計算出來的,並向下調用堆棧,然后將其作為列表返回。
編寫用於計算/返回任何給定行的遞歸並不困難,但我認為我可以將每個返回值附加到列表變量中。 我遇到的問題是我要做的所有事情來返回整個列表,使之與return語句混亂,並破壞行的計算。
def pascal(n, tri):
if n == 0:
return tri
else:
r = pascal(n - 1, tri)
row = [1] + [(r[i] + r[i + 1]) for i in range(len(r) - 1)] + [1]
tri.append(row)
print('tri =', tri)
return tri[-1]
print(pascal(5, [[1]]))
函數內部的print語句顯示行被追加到列表中。 我只是想不出如何在函數外返回列表。 我需要'tri'的最后一個列表元素來生成下一層,但是同時我想返回所有'tri'作為我的最終返回值。
這是我的第一個SO問題,如果我在這里看不到任何令人眼花obvious亂的東西,那么我深表歉意。 謝謝!
構建row
您應該返回整個tri
並僅使用r
的最后一個元素:
row = [1] + [(r[-1][i] + r[-1][i + 1]) for i in range(len(r[-1]) - 1)] + [1]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.