def fibonacci(n): return fibonacci_inner(n, {})?
时间: 2023-06-16 17:07:02 浏览: 39
这是一个使用记忆化搜索的斐波那契数列求解函数。斐波那契数列是这样一个数列:0、1、1、2、3、5、8、13、21、34、……,即第一项为0,第二项为1,后面每一项都是前面两项的和。使用记忆化搜索的方法可以避免重复计算同一个数,提高算法效率。这个函数的实现比较巧妙,使用了一个字典来存储已经计算过的数,避免了重复计算。
相关问题
# -*- 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))
下面是实现缓存的代码:
# -*- 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))
在这个代码中,我们使用了一个字典作为缓存。在计算斐波那契数列的某个数时,先检查缓存中是否已经有计算结果,如果有,就直接返回缓存结果;否则,进行计算,并将结果加入缓存。这样就可以避免重复计算,提高了程序的效率。
def fibonacci_inner(n, cache): if n == 1 or n == 2: return 1 r = 0 # TODO(You): 实现缓存 def fibonacci(n): return fibonacci_inner(n, {})是怎么实现将cache传入{}
在这段代码中,cache是一个字典,用于存储已经计算过的斐波那契数列的值,以便在后续的计算中直接使用,避免重复计算。
当调用`fibonacci(n)`函数时,它会调用`fibonacci_inner(n, {})`函数,并将一个空字典作为第二个参数传递给它。在`fibonacci_inner()`函数内部,它会接收这个字典作为第二个参数,并用它来存储已经计算过的值。
具体来说,当需要计算第n个斐波那契数时,`fibonacci_inner()`函数首先检查这个数是否已经被计算过,如果是,直接从cache中取出并返回。如果没有被计算过,则进行计算,并将计算结果存储到cache中,以便后续使用。
因此,通过将一个空字典作为第二个参数传递给`fibonacci_inner()`函数,就实现了将cache传入{}的操作。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)