簡體   English   中英

如何在python的遞歸函數中增長和返回列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM