【发布时间】:2020-12-04 21:41:57
【问题描述】:
我是 python 的初学者,正在关注this 学习动态编程的视频。 对于求斐波那契数列的案例,导师引入了memoization来提升递归算法的性能。 完整代码如下
import time
def fibonacci1(n):
'''This uses the naive fibonacci algorithm. '''
if n < 2:
return n
else:
return fibonacci1(n-1) + fibonacci1(n-2)
def fibonacci2(n):
''' This function uses a memo of computed values to speed up the process'''
memo = {}
if n in memo:
return memo[n]
if n < 2:
return n
f = fibonacci2(n-1) + fibonacci2(n-2)
memo[n] = f
return f
def screen(i,N):
if i==1:
return fibonacci1(N)
if i == 2:
return fibonacci2(N)
N = int(input("Enter a number: "))
for i in range(2):
t0 = time.time()
fib = screen(i+1,N)
print("The "+ str(N) +"th fibonacci number is {}".format(fib))
t1 = time.time()
print("Time taken is : {}s".format(t1-t0))
但这是我收到的输出: FibonacciOutput
有人可以帮我解决这个问题吗?
【问题讨论】:
标签: python recursion optimization dynamic-programming memoization