【发布时间】:2019-08-30 06:46:44
【问题描述】:
我正在编写一个 Python 代码来使用此处给出的数学公式生成加泰罗尼亚数字:
C(0) = 1 和 C(n) = (2(2n - 1) / (n + 1)) * C(n - 1) 每个网站在这里。 (https://rosettacode.org/wiki/Catalan_numbers)
但是,当我在 python 中将它作为函数编写时,它给了我错误的结果。
例如:对于 20 的答案应该是 6564120420.0 而我的代码给了我 344373768。
这里:
def catalan(cat_input):
if cat_input==0:
return 1
else:
return (((4*cat_input) - 2) / (cat_input + 1)) * (catalan(cat_input-1))
有人可以帮我解决这个问题吗?
【问题讨论】:
-
你所说的“错误结果”是什么意思,举个例子(据我测试,程序给出的正确结果至少高达 9)——除了结果是浮点数而不是整数这可以通过使用
//而不是/来修复 -
对所提问题进行更改以回答您的问题。
-
对我来说,使用上面的代码,catalan(20) 是 6564120420.0
-
按预期工作。顺便说一句,你的缩进搞砸了。
-
因为你们用的是python3而不是python2,看我的回答