【发布时间】:2015-11-15 04:29:49
【问题描述】:
我正在尝试编写一个函数,该函数将返回前 n 个加泰罗尼亚数字的列表。这是我目前所想出的。
def catalan_numbers(n):
if n == 0:
return 1
else:
n -= 1
return int((((2*n+2) * (2*n+1))/((n+1)*(n+2))) * catalan_numbers(n))
到目前为止,这为我提供了针对单个索引的正确解决方案。因此,如果我打电话给catalan_numbers(4),将返回 14,这是正确的,但正是我正在寻找的。我尝试通过以下方式解决此问题:
def catalan_numbers(n):
catalan = [1]
for x in range(0, n):
catalan.append(int((((2*n+2) * (2*n+1))/((n+1)*(n+2))) * catalan_numbers(n))
return catalan
但这会返回:
RuntimeError: maximum recursion depth exceeded in comparison
【问题讨论】:
-
您忘记为第二个递归函数添加基本情况
标签: python list function recursion