我尝试使用Python中的这段代码来计算加泰罗尼亚数字,但它就是不能工作。我怎么才能修复它?
下面是我的代码:
def catalan_rec(n):
if n == 0:
return 1
else:
b = 0
for i in range (n):
b += sum((catalan_rec(i))*(catalan_rec(n-1-i)))
return b发布于 2015-11-27 21:15:23
问题是你是在求和,实际上你应该乘法。来自Wikipedia的定义是:

您最好使用for循环而不是递归:
def catnumber(n):
ans = 1.0
for k in range(2,n+1):
ans = ans *(n+k)/k
return ans编辑2
我认为公式是不正确的,但问题实际上是它使用了整数除法,因此舍入子结果。解决方案是使用一个浮点型变量,我是通过初始化ans=1.0来实现的。
发布于 2015-11-27 21:15:31
更改行:
b += sum((catalan_rec(i))*(catalan_rec(n-1-i)))适用于:
b += (catalan_rec(i))*(catalan_rec(n-1-i))您正在将一个整数作为参数传递给只接受iterable的函数sum()。
发布于 2015-11-27 21:19:11
这似乎对我很有效(从你的代码)
def catalan_rec(n):
b = 0
if n == 0:
return 1
else:
for i in range (n):
b += (catalan_rec(i))*(catalan_rec(n-1-i))
return b
print catalan_rec(5)输出:
42https://stackoverflow.com/questions/33958133
复制相似问题