求最大公约数,看不懂第二行代码
def gcd(x, y):return x if y == 0 else gcd(y, y % x)
print(gcd(5,10))
我知道y如果不等于0结果就是gcd(y,y % x),有问题的地方就是gcd不是自己定于的函数吗,为什么我们在自己定义的函数里面,调用自己,懵了。 自己的函数也可以调用自己呀,迭代 所以这叫作递归 还记得汉诺塔吗
def hanota(n,x='x',y='y',z='z'):
if n == 1:
print(x,'-->',z)
else:
hanota(n-1,x,z,y)#将前n-1个盘子从x移到y上
print(x,'-->',z)#将底下的最后一个盘子从x移到z
hanota(n-1,y,x,z)#将y的n-1个盘子移到z上
hanota(3)
函数不断返回自身的结果,这种行为就是递归 就像一个函数里面调用另一个函数一样,你可以把它当作另一个函数来看待,只不过它们功能完全一样,这样想会不会好理解点
页:
[1]