python代码备忘录

从斐波那契的递归实现到通用递归函数的实现

def fibonacci(_target):
	if _target == 0:
		return 1
	else
		return fibonacci(_target - 1) + fibonacci(_target - 2)
	
	
fibonacci(10)

从上述算法中我们知道,每进入一层递归,递归函数都会在调用自己两次。故此方法实现的 Fibonacci 函数对空间的使用是指数级增长的,并且由 Fibonacci 的公式:

f(n) = f(n - 1) + f(n - 2)

我们知道,在下一层计算中有

f(n - 1) = f(n - 2) + f(n - 3)
f(n - 2) = f(n - 3) + f(n - 4)

其中有一半的计算是重复的,针对以上问题,便诞生了【尾递归法】对其进行优化

尾递归法

def fibonacci(_target = 0, _cur = 0, _nex = 1):
	if _target == 0:
		return cur
	else:
		return fibonacci(_target - 1, _nex, _cur + _nex)


fibonacci(10)
posted @ 2024-06-04 09:10  Aorphine  阅读(12)  评论(0)    收藏  举报