列出此斐波那契代码中的范围错误索引



如果我运行这段代码

def fib(n):
if n == 1:
return [1]
if n == 2:
return [1, 1]
else:
return fib(n - 1).append(fib(n - 1)[n - 1] + fib(n - 2)[n - 2])

print fib(3)

我收到一个错误,列出索引超出范围。

不能追加到return中。此外,您在append语句中犯了一个 off by 1 错误,导致索引超出范围错误。如果您将之前的答案存储在一个列表中,我称之为fiblist,然后您可以附加到该列表中,然后返回它。

此代码生成所需的答案:

def fib(n):
if n == 1:
return [1]
if n == 2:
return [1, 1]
else:
fiblist = (fib(n - 1))
fiblist.append(fib(n - 1)[n - 2] + fib(n - 2)[n - 3])
return fiblist
print(fib(3))