使用python中的动态编程实现斐波那契



我正在尝试使用动态规划实现斐波那契数列。 它显示错误。这是怎么回事?

def fibo(n): # n is the nth Fibonacci no. in the sequence
fib = {} # dict to store earlier values
for k in range(1, n + 1): # iterating each time
if k <= 1 : 
f = 0
if k == 2 : 
f = 1
else:
f = fib[k - 1] + fib[k - 2] # looking up in the fib{}
fib[k] = f
return fib[n] # returns the nth Fibonacci number
n = int(input('Enter n = '))
print('%dth fibo no. is = %d' %(n, fibo(n))) # calling n printing

我只能假设您的初始错误是由缩进引起的。正确缩进后,代码运行时不会出错。

由于无论 n 的值如何,您都将在k == 1k == 2处执行相同的操作,因此在循环外部分配这些值并稍后启动循环更有意义。

fib = {1: 0, 2: 1}

在此更改之后,在更正缩进之后,您的函数类似于以下内容:

def fibo(n):
fib = {1: 0, 2: 1}
for k in range(3, n + 1):
f = fib[k - 1] + fib[k - 2]
fib[k] = f
return fib[n]
n = int(input('Enter n = '))
print('%dth fibo no. is = %d' %(n, fibo(n)))

最新更新