Pascal's Triangle Python Recursive



我想写一个函数,它将接受一个数字(n(和它的Pascal三角。我已经写了一些代码,但它不起作用,它只适用于1的基本情况,因为它只是一个if语句。代码写在这里:

def pt_row(n):
if n == 0:
return []
elif n == 1:
return [1]
else:
new_row = [1]
result = pt_row(n-1)
last_row = result[-1]
for i in range(len(last_row)-1):
new_row.append(last_row[i] + last_row[i+1])
new_row += [1]
result.append(new_row)
return result

该代码在2以上的情况下崩溃,因为"int对象没有len"或类似的东西,我不知道如何修复它。以下是一些测试用例:

#What it should do
pt_row(1)
>>> [1]
pt_row(6)
>>> [1, 5, 10, 10, 5, 1]
#What it really does
pt_row(1)
>> [1]
pt_row(6)
CRASH

我该如何解决这个问题?我只需要把变量变成一个列表,还是必须重写所有的代码?

result[-1]是一个整数,不能得到它的len。您只需要返回最后一行,这样代码就可以简化为:

def pt_row(n):
if n == 0:
return []
elif n == 1:
return [1]
else:
new_row = [1]
result = pt_row(n-1)
for i in range(len(result) - 1):
new_row.append(result[i] + result[i+1])
new_row += [1]
return new_row

最新更新