【发布时间】:2019-06-04 16:54:39
【问题描述】:
我编写了这段代码来计算第 n 个斐波那契数,它可以工作(计算正确的数字)但由于表格没有更新而失败。有人知道为什么吗?
# memoization
n = 12
table = np.ones(n+1)*-1
def fib3(n):
if table[n]==-1:
if n<=2:
table[n] = 1
else:
table[n] = fib3(n-1)+fib3(n-2)
#return table ##This was part of my original solution but I removed it because it wasn't working
fib3(12)
这是我认为是由非更新表引起的错误(因为 table[n] 始终 = -1):
TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'
【问题讨论】:
-
你实际上并没有从你的函数中返回任何东西。
-
你的函数没有
return任何东西。所以fib3(n-1) + fib3(n-2)没有意义,因为你是在对 2 个 void 值求和。 -
又名
table[n] = None + None -
你需要返回table[n]
-
感谢您的帮助。我认为 table 是全局的,因为它是在函数之外声明的
标签: python fibonacci memoization