# -*- coding: UTF-8 -*- def fibonacci_inner(n, cache): if n == 1 or n == 2: return 1 r = 0 # TODO(You): 实现缓存 def fibonacci(n): return fibonacci_inner(n, {}) if __name__ == '__main__': print(fibonacci(6))
时间: 2023-06-16 09:07:31 浏览: 139
13818-3:1998
下面是实现缓存的代码:
# -*- coding: UTF-8 -*-
def fibonacci_inner(n, cache):
if n == 1 or n == 2:
return 1
if n in cache:
return cache[n] # 如果已经计算过,直接返回缓存结果
r = fibonacci_inner(n-1, cache) + fibonacci_inner(n-2, cache)
cache[n] = r # 将结果加入缓存
return r
def fibonacci(n):
return fibonacci_inner(n, {})
if __name__ == '__main__':
print(fibonacci(6))
在这个代码中,我们使用了一个字典作为缓存。在计算斐波那契数列的某个数时,先检查缓存中是否已经有计算结果,如果有,就直接返回缓存结果;否则,进行计算,并将结果加入缓存。这样就可以避免重复计算,提高了程序的效率。
阅读全文