gpt4 book ai didi

python - 如何从Python中的递归函数内部增长并返回列表

转载 作者:行者123 更新时间:2023-12-01 00:35:56 24 4
gpt4 key购买 nike

我有一个帕斯卡三角形的递归解决方案,但它返回所请求的三角形的行,而不是它前面的所有行。我想知道是否有一种方法可以从基本情况和调用堆栈中计算出所有行,并将其作为列表返回。

编写用于计算/返回任何给定行的递归并不困难,但我认为我可以将每个返回附加到列表变量。我遇到的问题是,我所做的任何返回整个列表的操作都会与 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”作为我的最终返回。

这是我的第一个问题,所以如果我没有在这里看到一些明显的东西,我深表歉意。谢谢!

最佳答案

当您构建时,您应该返回整个tri并仅使用r的最后一个元素:

row = [1] + [(r[-1][i] + r[-1][i + 1]) for i in range(len(r[-1]) - 1)] + [1]

关于python - 如何从Python中的递归函数内部增长并返回列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57762705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com