python 最后一行递归帕斯卡三角形
python last row recursive pascal triangle
我必须创建一个递归函数 pascal(n)
,returns 帕斯卡三角形的线 n
作为列表(所以 pascal(3)
returns [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
但这会导致错误
object of type 'int' has no 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]
,就没有问题了。我该如何解决这个问题?谢谢。
您希望 pascal(n)
到 return 帕斯卡三角形的第 n 行作为列表,但您 returning [[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
我必须创建一个递归函数 pascal(n)
,returns 帕斯卡三角形的线 n
作为列表(所以 pascal(3)
returns [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
但这会导致错误
object of type 'int' has no 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]
,就没有问题了。我该如何解决这个问题?谢谢。
您希望 pascal(n)
到 return 帕斯卡三角形的第 n 行作为列表,但您 returning [[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