我正在尝试借助动态编程获得Padovan序列中的第n个数字。谁能告诉我我的代码出了什么问题?
def padovan(n):
p = [1, 1, 1]
while len(p) < n+1:
p.append(0)
res = sum([p[i] for i in range(3)])
for i in range(3, n+1):
res += p[n-2] + p[n-3]
return res
它应该返回正确的第n个数字,但我不知道这是怎么回事。
答案 0 :(得分:0)
您不更新列表项,并且始终重复使用相同(零个)的最后一项。不需要res
。
for i in range(3, n+1):
p[i] = p[i-2] + p[i-3]
return p[n]
print(padovan(10))
>>12