鱼C论坛

 找回密码
 立即注册
查看: 1089|回复: 1

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

[复制链接]
发表于 2022-3-1 23:37:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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循环的原理,求解其中逻辑关系
最佳答案
2022-3-1 23:43:21
while y 只有在 y 为零时跳出循环,y 非零继续循环,因为非零即True,欧几里得算法就是一直取余直到余数为0,

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

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

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

所以 y 作为上一步的除数赋值给了 x 作为被除数,而 t 作为上一步的余数赋值给了 y 作为除数,进行下一步循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-1 23:43:21 | 显示全部楼层    本楼为最佳答案   
while y 只有在 y 为零时跳出循环,y 非零继续循环,因为非零即True,欧几里得算法就是一直取余直到余数为0,

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

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

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

所以 y 作为上一步的除数赋值给了 x 作为被除数,而 t 作为上一步的余数赋值给了 y 作为除数,进行下一步循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 06:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表