<p>为了计算加泰罗尼亚数字,我写了两个代码。One(def“Catalan”)递归工作并返回正确的Catalan数字。在</p>
<pre><code>dicatalan = {}
def catalan(n):
if n == 0:
return 1
else:
res = 0
if n not in dicatalan:
for i in range(n):
res += catalan(i) * catalan(n - i - 1)
dicatalan[n] = res
return dicatalan[n]
</code></pre>
<p>另一个(def“catalanFormula”)应用隐式公式,但不能从n=30开始精确计算。问题源于浮点-对于k=9,程序返回“6835971.99999999”而不是“6835972”,并从这一刻开始累积错误,直到最终的错误答案。在</p>
<p>(打印线用于检查)</p>
^{pr2}$
<p>我尝试过舍入,但失败了,尝试了十进制导入,仍然没有得到正确的结果。在</p>
<p>我需要“catalanFormula”和“catalan”一样完美;
有什么想法吗?在</p>
<p>谢谢!在</p>