唯爱丶雪 发表于 2021-3-12 23:47:09

求最大公约数,看不懂第二行代码

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不是自己定于的函数吗,为什么我们在自己定义的函数里面,调用自己,懵了。

yuedong 发表于 2021-3-13 00:15:15

自己的函数也可以调用自己呀,迭代

qq1151985918 发表于 2021-3-13 00:24:01

所以这叫作递归

逃兵 发表于 2021-3-13 08:04:21

还记得汉诺塔吗

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)

函数不断返回自身的结果,这种行为就是递归

2ban20hao 发表于 2021-3-13 10:25:55

就像一个函数里面调用另一个函数一样,你可以把它当作另一个函数来看待,只不过它们功能完全一样,这样想会不会好理解点
页: [1]
查看完整版本: 求最大公约数,看不懂第二行代码