#课堂笔记
递归需满足的两个条件:(1)调用了函数本身(2)设置了正确的返回条件
在编写程序时,要谨慎使用递归:(1)递归的实现是自个调用自个,因此每次函数的调用都要使用压栈、弹栈、保存和恢复寄存器的栈操作,是很消耗时间和空间的(2)递归在编写时要非常小心,一旦忘记返回,或者设置了错误的返回条件,这样的递归代码就会变成一个无底洞:只进不出
0使用递归编写一个power()函数模拟内建函数pow(),即power(x, y)为计算并返回x的y次幂的值。
def power(x,y):
if y:
return x*(power(x,y-1))
else:
return x
1使用递归编写一个函数,利用欧几里得算法求最大公约数,例如gcd(x, y)返回值为参数x和参数y的最大公约数。
定理:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。
def gcd(x,y):
if x:
return gcd(y%x,x)#递归中 x y 应该与前面一一对应
else:
return y