n += 1
ppC(n+1,C) # recursive
有了这两条线,你到ppC
秒呼叫将具有n
值的2,这是一个过去的阵列的端部。只尝试一次递增n。
from math import *
C = []
C += [0]
def ppC(n,C): # increment list C
print(C[n]) # list index out of range
C += [ C[n]*(4*n+2)/(n+2) ]
ppC(n+1,C) # recursive
ppC(0,C) # RUN
你或许应该也有某种检查,以确定何时应该停止产生号码,否则该功能将永远运行。 (或者更确切地说,它会运行一个千倍和崩溃与“最大递归深度超过”错误。)例如:
from math import *
C = []
C += [1]
def ppC(n,C): # increment list C
print(C[n]) # list index out of range
C += [ C[n]*(4*n+2)/(n+2) ]
if len(C) > 100:
return
ppC(n+1,C) # recursive
ppC(0,C) # RUN
一件事。是不是第一个加泰罗尼亚号,而不是零?
from math import *
C = []
C += [1]
def ppC(n,C): # increment list C
print(C[n]) # list index out of range
C += [ C[n]*(4*n+2)/(n+2) ]
if len(C) > 10:
return
ppC(n+1,C) # recursive
ppC(0,C) # RUN
结果:
1
1
2
5
14
42
132
429
1430
4862
它听起来像你超越你的数组的大小 – jgr208 2015-02-09 13:50:22
你接着说:1'到'N' ** **两次,但只有一个元素被添加到'C'。 – 2015-02-09 13:54:15
值得注意的是,当你想将一个元素添加到列表中而不是执行list + = [element](它会创建一个额外的列表)时,会出现'list.append(element)'。你可能还想看看[python style guide](https://www.python.org/dev/peps/pep-0008/) - 诸如奇数间距和使用奇数capitilisation来表示变量名称会导致代码难以阅读。 – 2015-02-09 13:55:53