cache = {} def fib(number): if number in cache: return cache[number] if number == 0 or number == 1: return 1 else: cache[number] = fib(number - 1) + fib(number - 2) return cache[number] if __name__ == '__main__': print(fib(35))
时间: 2024-04-19 10:29:06 浏览: 152
这段代码实现了一个使用缓存的斐波那契数列函数。先声明了一个空字典`cache`用于存储已经计算过的斐波那契数值。
然后定义了一个名为`fib`的函数,接受一个参数`number`表示要计算的斐波那契数列的索引。在函数内部,首先检查当前索引是否已经存在于缓存中,如果存在则直接返回缓存中的值。
接着判断索引是否为0或1,如果是,则直接返回1,因为斐波那契数列的定义是第0项和第1项都为1。
如果以上条件都不满足,说明需要递归计算斐波那契数列。通过调用`fib(number - 1)`和`fib(number - 2)`分别计算前两项的值,并将它们相加得到当前索引对应的斐波那契数值。将计算结果存入缓存字典中,以便后续使用。
最后返回当前索引对应的斐波那契数值。
在主程序中,使用`if __name__ == '__main__':`来判断是否作为独立程序运行。调用`fib(35)`来计算斐波那契数列中索引为35的值,并打印结果。
这段代码通过使用缓存来避免重复计算,提高了斐波那契数列函数的效率。
相关问题
cache = {} def fib(number): if number in cache: return cache[number] if number == 0 or number == 1: return 1 else: cache[number] = fib(number - 1) + fib(number - 2) return cache[number] if __name__ == '__main__': print(fib(35))
这段代码是一个使用缓存技术实现的斐波那契数列计算程序。它通过定义一个cache字典来保存已经计算过的斐波那契数列的值,避免了重复计算。在fib()函数中,首先判断要计算的数是否已经在cache字典中,如果是则直接返回该数的值;否则,根据斐波那契数列的递推公式计算该数,并将结果保存在cache字典中。最后返回该数的值。
在主程序中,调用fib(35)计算斐波那契数列的第35项,并将结果打印输出。
阅读全文