ningdongdong 发表于 2022-3-1 23:37:40

不懂while循环的原理,求解其中逻辑关系

1. 编写一个函数,利用欧几里得算法(脑补链接)求最大公约数,例如 gcd(x, y) 返回值为参数 x 和参数 y 的最大公约数。

def gcd(x, y):
    while y:
      t = x % y
      x = y
      y = t

    return x
   
print(gcd(4, 6))

----------------------
不懂while循环的原理,求解其中逻辑关系

isdkz 发表于 2022-3-1 23:43:21

while y 只有在 y 为零时跳出循环,y 非零继续循环,因为非零即True,欧几里得算法就是一直取余直到余数为0,

t 就是余数,而 y 在循环的最后赋值为了余数,

因为欧几里得算法除了第一步是用大数除以小数,

后面都是用上一步的除数除以上一步的余数,

所以 y 作为上一步的除数赋值给了 x 作为被除数,而 t 作为上一步的余数赋值给了 y 作为除数,进行下一步循环
页: [1]
查看完整版本: 不懂while循环的原理,求解其中逻辑关系