不懂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循环的原理,求解其中逻辑关系 while y 只有在 y 为零时跳出循环,y 非零继续循环,因为非零即True,欧几里得算法就是一直取余直到余数为0,
t 就是余数,而 y 在循环的最后赋值为了余数,
因为欧几里得算法除了第一步是用大数除以小数,
后面都是用上一步的除数除以上一步的余数,
所以 y 作为上一步的除数赋值给了 x 作为被除数,而 t 作为上一步的余数赋值给了 y 作为除数,进行下一步循环
页:
[1]