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



让我在前言中说,我对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()

加泰罗尼亚函数中有两个主要错误。

首先,如中所示http://en.wikipedia.org/wiki/Catalan_number,你写的公式对于用加泰罗尼亚语(n)计算加泰罗尼亚语(n+1)很有用。要使用它根据加泰罗尼亚语(n-1)计算加泰罗尼亚语(n),您必须移动索引。所以它应该是(4*n-2)/(n+1)*加泰罗尼亚语(n-1)。

其次,python在处理int时使用整数运算。因此,商被四舍五入为int(也就是说,5/2给出2,而不是2.5)。处理这个问题的一种方法是先写乘积,然后写商:(4*n-2)*Catalan(n-1)/(n+1)。

在编程过程中,您的公式看起来已被破坏。取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

最新更新