We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
计算斐波那契数列 Python 代码:
def fibonacci(n): if n == 0: # 终止条件 return 0 if n == 1: # 终止条件 return 1 return fibonacci(n - 1) + fibonacci(n - 2) # 递归调用
递归过程示意
fibonacci(5) = fibonacci(4) + fibonacci(3) = (fibonacci(3) + fibonacci(2)) + (fibonacci(2) + fibonacci(1)) = ((fibonacci(2) + fibonacci(1)) + fibonacci(2)) + (fibonacci(2) + 1) = (((fibonacci(1) + fibonacci(0)) + fibonacci(1)) + fibonacci(2)) + (fibonacci(2) + 1) = (((1 + 0) + 1) + fibonacci(2)) + (fibonacci(2) + 1) = (((1 + 0) + 1) + ((1 + 0) + 1)) + (((1 + 0) + 1) + 1) = 5
缺点:重复计算! 可以用 缓存优化。 缓存优化(减少重复计算) 斐波那契数列 的递归会重复计算很多次,可以使用 缓存 来优化:
from functools import lru_cache @lru_cache(None) # 自动缓存计算结果 def fibonacci(n): if n < 2: return n return fibonacci(n - 1) + fibonacci(n - 2) print(fibonacci(50)) # 只需几毫秒!
优化效果:
fibonacci(50)
The text was updated successfully, but these errors were encountered:
No branches or pull requests
1.递归的一种优化方法:缓存优化(减少重复计算),以斐波那契数列为例
计算斐波那契数列
Python 代码:
递归过程示意
缺点:重复计算! 可以用 缓存优化。
缓存优化(减少重复计算)
斐波那契数列 的递归会重复计算很多次,可以使用 缓存 来优化:
优化效果:
fibonacci(50)
快100万倍!The text was updated successfully, but these errors were encountered: