提示:
算法的递归设计方法
算法的递归设计方法
基本概念
函数(或子程序)直接或间接地调用自身的情形称为递归。
例如n!的计算和汉诺塔问题
设计步骤:
🛴需要解决的问题可以转化为一个或多个子问题来解决,而这些子问题的求解方法与原问题完全相同,只是在数量规模上不同。最终可以找到N=1,并且结果可知。
🛴递归调用的次数必须是有限的。
🛴必须有结束递归的条件来终止递归。
任何的递归算法都可以转化为迭代算法
任何的迭代算法也都可以转化为递归算法
递归算法通常有好的直接性,易于设计;
但递归算法在运行中要先进行大量的递归调用,这会占用大量的栈空间,也花费大量的运行时间;
通常用递归设计算法,然后转换为迭代提高运行效率。
示例
GCD算法的递归表述及实现
def gcd(a,b):
if(b==0):
return a
else:
return gcd(b,a%b)
print(gcd(45,5))