如果我运行这段代码
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))