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