今天的我更强了 发表于 2020-6-4 19:30:54

递归课后作业

课后作业用递归法求欧几里得算法中

def gcd(x,y):
    if x%y==0:
      return y
    else:
      x=y
      y=x%y
      return gcd(x,y)
会报错: if x%y==0:

ZeroDivisionError: integer division or modulo by zero


def gcd(x,y):
    if x%y==0:
      return y
    else:
      return gcd(y,x%y)
却能够正常运行,这是为什么?求大神指教

永恒的蓝色梦想 发表于 2020-6-4 19:33:23

y=x%y这时候的 x 已经变成 y 了。

永恒的蓝色梦想 发表于 2020-6-4 19:34:59

欧几里得算法代码:def gcd(x,y,/):
    while y:
      x,y=y,x%y
    return x

今天的我更强了 发表于 2020-6-4 19:35:54

{:10_269:}

今天的我更强了 发表于 2020-6-4 19:40:28

永恒的蓝色梦想 发表于 2020-6-4 19:33
这时候的 x 已经变成 y 了。

谢谢谢谢
页: [1]
查看完整版本: 递归课后作业