用Python编写一个函数,实现一个带缓存功能的斐波那契数列生成器,使用闭包来保存已计算过的结果。
时间: 2024-03-18 22:38:48 浏览: 78
好的,以下是实现带缓存功能的斐波那契数列生成器的代码:
```python
def fibonacci_with_cache():
cache = {}
def fibonacci(n):
if n in cache:
return cache[n]
elif n == 0:
return 0
elif n == 1:
return 1
else:
result = fibonacci(n-1) + fibonacci(n-2)
cache[n] = result
return result
return fibonacci
```
这个函数返回了一个闭包,其中包含了一个字典来保存已经计算过的结果。当我们调用这个闭包时,它首先检查缓存中是否有需要的值,如果有,则立即返回,否则就计算值,将它存入缓存中,并返回它。
可以这样使用这个函数:
```python
fib = fibonacci_with_cache()
print(fib(10)) # 55
print(fib(20)) # 6765
print(fib(30)) # 832040
print(fib(40)) # 102334155
```
使用带缓存功能的斐波那契数列生成器,可以大幅度提高计算效率。
阅读全文