创建加泰罗尼亚数字循环并绘制图形[python]

时间:2015-03-03 19:12:10

标签: python catalan

让我先说一下我完全是python的新手并为此编程,我需要创建一个程序来打印所有加泰罗尼亚数字,最多可达一万亿。我已经写出了程序的基础知识,但我似乎无法理解为什么我没有得到正确的数字。此外,当我尝试绘制趋势图时,我正在运行程序。在此先感谢,这是我的代码:

import numpy as np
import scipy as sp
from pylab import *

def Catalan(n):
    if n==0:
        return (1)
    elif n==1:
        return (1)
    else:
        return ((4*n+2)/(n+2))*Catalan(n-1)
for n in range(18):
    print (Catalan(n))

n=np.linspace(0,18,100)
y=Catalan(n)
plot(n,y,'r')
show()

2 个答案:

答案 0 :(得分:1)

加泰罗尼亚语功能有两个主要错误。

首先,如http://en.wikipedia.org/wiki/Catalan_number所示,您编写的公式对于根据加泰罗尼亚语(n)计算加泰罗尼亚语(n + 1)非常有用。要用它来计算加泰罗尼亚语(n)的加泰罗尼亚语(n),就像你一样,你必须改变索引。所以它应该是(4 * n-2)/(n + 1)*加泰罗尼亚语(n-1)。

其次,python在处理int时使用整数运算。因此,商数向下舍入到整数(这是,5/2给出2,而不是2.5)。解决这个问题的一种方法是首先写出产品,然后写出商:(4 * n-2)*加泰罗尼亚语(n-1)/(n + 1)。

答案 1 :(得分:0)

没关系编程,你的公式看起来很糟糕。拿n=2

return ((4*n+2)/(n+2))*Catalan(n-1)
     = ((4*2+2)/(2+2))*Catalan(2-1)
     = (( 8 +2)/( 4 ))*Catalan( 1 )
     = (( 10  )/  4  )*    1
     = 2.5