基本加泰罗尼亚数字
Basic Catalan numbers
我想编写一个程序,打印出所有小于或等于 100000 的加泰罗尼亚数字。
这些由 cn=1
和 cn1 = ((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 (most recent call last):
File "", line 1, in
runfile('C:/Users/Admin/Desktop/cpy/ex_cat_numbe.py', wdir='C:/Users/Admin/Desktop/cpy')
File "C:\Users\Admin\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 710, in runfile
execfile(filename, namespace)
File "C:\Users\Admin\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 101, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/Admin/Desktop/cpy/ex_cat_numbe.py", line 11, in
cn1 = ((4(n+2)/(n+2)))*cn
TypeError: 'int' object is not callable
您的错误在第 4 行:
cn1 = ((4(n+2)/(n+2)))*cn
您应该输入 *
来乘以 4
和 (n+2)
。实际上,您正在尝试调用数字 4,就像调用 functions() 一样。
但是你的代码中还有第二个问题。您没有更改 while 循环内的 cn1
变量。它将始终保持相同的值。
打印结果后尝试写下一行:
cn = cn1
您没有使用正确的公式来计算加泰罗尼亚语数。这是打印小于或等于 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。
我想编写一个程序,打印出所有小于或等于 100000 的加泰罗尼亚数字。
这些由 cn=1
和 cn1 = ((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 (most recent call last):
File "", line 1, in runfile('C:/Users/Admin/Desktop/cpy/ex_cat_numbe.py', wdir='C:/Users/Admin/Desktop/cpy')
File "C:\Users\Admin\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 710, in runfile execfile(filename, namespace)
File "C:\Users\Admin\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 101, in execfile exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/Admin/Desktop/cpy/ex_cat_numbe.py", line 11, in cn1 = ((4(n+2)/(n+2)))*cn
TypeError: 'int' object is not callable
您的错误在第 4 行:
cn1 = ((4(n+2)/(n+2)))*cn
您应该输入 *
来乘以 4
和 (n+2)
。实际上,您正在尝试调用数字 4,就像调用 functions() 一样。
但是你的代码中还有第二个问题。您没有更改 while 循环内的 cn1
变量。它将始终保持相同的值。
打印结果后尝试写下一行:
cn = cn1
您没有使用正确的公式来计算加泰罗尼亚语数。这是打印小于或等于 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。