鱼C论坛

 找回密码
 立即注册
查看: 2993|回复: 6

[新人报道] 这个简单的公约数为什么不能跑

[复制链接]
发表于 2021-9-20 20:41:25 | 显示全部楼层 |阅读模式

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

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

x
欧几里得求公约数

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

这个为什么程序报错呢??????


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

但是1改成y为什么就可以了呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-21 09:05:03 From FishC Mobile | 显示全部楼层
W1ND123 发表于 2021-9-21 08:47
当你调用函数,gcd(2,4),这个时候y等于4,不也是数字吗,这样子函数内部就是while 4,为什么能跑呢?
还有 ...

死循环有的会报错,比如栈溢出啥的
而有的时候就不报错,
while后面跟一个数字的情况分俩种
while   0    这种情况就是循环终止了
while   非0   这就是一直循环直至降到0或升到0
       而这个数字如果一直都不改变,那就是死循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-9-20 21:07:24 | 显示全部楼层
    while 1 是死循环,而 while y 不是。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-21 08:47:34 | 显示全部楼层
jackz007 发表于 2021-9-20 21:07
while 1 是死循环,而 while y 不是。

当你调用函数,gcd(2,4),这个时候y等于4,不也是数字吗,这样子函数内部就是while 4,为什么能跑呢?
还有一个问题,死循环程序会报错吗,不是只是一直循环罢了吗
望解答,小白问题多,谢谢!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-21 09:00:25 | 显示全部楼层
jackz007 发表于 2021-9-20 21:07
while 1 是死循环,而 while y 不是。

哦哦,刚刚自己研究了一下,这个程序,我已经明白为什么一定要是y了,谢谢大佬的解答
不过我还有个小问题,就是死循环是没办法跑起来的吗,我记得我用while 死循环打印一个东西,会一直打印到崩溃呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-21 09:58:10 | 显示全部楼层
wp231957 发表于 2021-9-21 09:05
死循环有的会报错,比如栈溢出啥的
而有的时候就不报错,
while后面跟一个数字的情况分俩种

明白了,感谢!!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-21 10:04:46 | 显示全部楼层
开卷有益,多多益善·····
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 18:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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