-1

我想编写一个程序,打印出所有小于或等于 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') Traceback(最近一次通话最后):

文件“”,第 1 行,在 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 行,运行文件 execfile(文件名,命名空间)

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

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

TypeError:“int”对象不可调用

4

2 回答 2

1

您的错误在第 4 行:

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

你应该把 a和*相乘。实际上,您尝试调用数字 4,就像调用函数()一样。4(n+2)

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

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

cn = cn1
于 2018-02-24T13:00:54.603 回答
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

有关代码的更多信息,请查看此链接

于 2018-02-24T13:04:57.783 回答