基本加泰罗尼亚数字

时间:2018-02-24 12:34:50

标签: python catalan

我想编写一个程序,打印出小于或等于100000的所有加泰罗尼亚数字。

cn=1cn1 = ((4n+2)/n+2)*cn(下一个值)给出。当我尝试它时,我得到以下错误。

我的代码是:

 cn,cn1 = 1,2
 n = 1 
 while cn1<100000:
       cn1 = ((4(n+2)/(n+2)))*cn
       print(cn1)

我的输出错误:

  

runfile('C:/Users/Admin/Desktop/cpy/ex_cat_numbe.py',wdir ='C:/ Users / Admin / Desktop / cpy')   回溯(最近一次调用最后一次):

     

文件“”,第1行,in       runfile('C:/Users/Admin/Desktop/cpy/ex_cat_numbe.py',wdir ='C:/ Users / Admin / Desktop / cpy')

     

文件“C:\ Users \ Admin \ Anaconda3 \ lib \ site-packages \ spyder \ utils \ site \ sitecustomize.py”,第710行,在runfile中       execfile(filename,namespace)

     

文件“C:\ Users \ Admin \ Anaconda3 \ lib \ site-packages \ spyder \ utils \ site \ sitecustomize.py”,第101行,在execfile中       exec(compile(f.read(),filename,'e​​xec'),namespace)

     

文件“C:/Users/Admin/Desktop/cpy/ex_cat_numbe.py”,第11行,在       cn1 =((4(n + 2)/(n + 2)))* cn

     

TypeError:'int'对象不可调用

2 个答案:

答案 0 :(得分:1)

您的错误在第4行:

cn1 = ((4(n+2)/(n+2)))*cn

您应该*加倍4(n+2)。就这样,你试着拨打号码4,就像你调用函数一样()。

但是您的代码中存在第二个问题。您没有更改while循环中的cn1变量。它将始终保持相同的值。

在打印结果后尝试编写以下行:

cn = cn1

答案 1 :(得分:1)

您没有使用正确的公式计算加泰罗尼亚数字。以下是打印小于或等于100000的加泰罗尼亚语数字的代码:

# A recursive function to find nth catalan number
def catalan(n):
    # Base Case
    if n <= 1:
        return 1

    # Catalan(n) is the sum of catalan(i)*catalan(n-i-1)
    res = 0
    for i in range(n):
        res += catalan(i) * catalan(n - i - 1)

    return res


n = 0
c = catalan(n)
while c <= 100000:
    print(c)
    n += 1
    c = catalan(n)

输出:

1
1
2
5
14
42
132
429
1430
4862
16796
58786

有关代码检查的更多信息this link