[英]python last row recursive pascal triangle
我必须创建一个递归 function 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' 类型的 object 没有 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)
将帕斯卡三角形的第 n 行作为列表返回,但您将返回 [[1]] 而不是 [1] 的pascal(1)
。
此外,“last_row”,即对应于 pascal(n) 的前一行将是pascal(n-1)
而不是pascal(n-1)[-1]
。 在您的代码中, result[-1]
是pascal(n-1)[-1]
,它是第 (n-1) 行的最后一个元素 (int),因此是错误的。
在进行上述 2 项更改后,这将是您的 function。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.