我必須創建一個遞回函式pascal(n),將n帕斯卡三角形的線作為串列pascal(3)回傳(因此回傳[1, 3, 3, 1])。
到目前為止我有
def pascal(n):
if n==1:
return [[1]]
else:
result=pascal(n-1)
row=[1]
last_row=result[-1]
for i in range(len(last_row)-1):
row.append(last_row[i] last_row[i 1])
row =[1]
result.append(row)
return row
但這會導致錯誤
“int”型別的物件沒有 len()
如果我改為寫
def pascal(n):
if n==1:
return [[1]]
else:
result=pascal(n-1)
row=[1]
last_row=result[-1]
for i in range(len(last_row)-1):
row.append(last_row[i] last_row[i 1])
row =[1]
result.append(row)
return result
然后呼叫pascal(3)[-1],沒有問題。我該如何解決這個問題?謝謝。
uj5u.com熱心網友回復:
您想pascal(n)將帕斯卡三角形的第 n 行作為串列回傳,但是您回傳的是 [[1]] 而不是 [1] for pascal(1)。
此外,“last_row”,即對應于 pascal(n) 的前一行將是pascal(n-1)而不是pascal(n-1)[-1]。在您的代碼中,result[-1]是pascal(n-1)[-1]第 (n-1) 行的最后一個元素 (int),因此是錯誤。
在進行上述 2 項更改后,這將是您的功能。
def pascal(n):
if n == 0:
return [1]
else:
last_row = pascal(n-1)
row = [1]
for i in range(len(last_row)-1):
row.append(last_row[i] last_row[i 1])
row = [1]
return row
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/371673.html
