鱼C论坛

 找回密码
 立即注册
查看: 2070|回复: 10

[已解决]求大佬解答while x 和 while x != 0 的区别

[复制链接]
发表于 2020-3-3 22:44:57 | 显示全部楼层 |阅读模式

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

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

x
def gcd(x,y):
    if x > y:
        a = x
        b = y
    else:
        a = y
        b = x
    r = a % b
    while r != 0:
        a = b
        b = r
        r = a % b
    return b
   
求最大公约数的那道题,这样写程序就能跑

但是把while r!= 0改成 while r

程序就会报错,为嘛呢???
最佳答案
2020-3-3 22:46:18
不会呀,while x 和 while x != 0 没区别
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-3 22:46:18 | 显示全部楼层    本楼为最佳答案   
不会呀,while x 和 while x != 0 没区别
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 22:49:45 | 显示全部楼层
不好意思,刚才又测试了一下,是我自己太蠢了,肯定别的地方打错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-3 22:53:19 | 显示全部楼层
顺便补充个一个自己写的不是很简洁但是也能勉强跑的版本
def gcd(x,y):
    r = x % y
    while r:
        x = y
        y = r
        r = x % y
    return y
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-4 08:59:31 | 显示全部楼层
爱骆骆联盟盟主 发表于 2020-3-3 22:53
顺便补充个一个自己写的不是很简洁但是也能勉强跑的版本
def gcd(x,y):
    r = x % y


我怀疑你这句代码缩进错误了:
def gcd(x,y):
    if x > y:
        a = x
        b = y
    else:
        a = y
        b = x
    r = a % b
    while r != 0:
        a = b
        b = r
        r = a % b
    return b
这样试试能不能跑:
def gcd(x,y):
    if x > y:
        a = x
        b = y
    else:
        a = y
        b = x
        r = a % b
    while r != 0:
        a = b
        b = r
        r = a % b
    return b
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-4 14:03:22 | 显示全部楼层
wuqramy 发表于 2020-3-4 08:59
我怀疑你这句代码缩进错误了:
def gcd(x,y):
    if x > y:

我回去看了一下,那句如果缩进了的话,当x>y时程序就跑不起来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-4 14:23:33 | 显示全部楼层
爱骆骆联盟盟主 发表于 2020-3-4 14:03
我回去看了一下,那句如果缩进了的话,当x>y时程序就跑不起来了
def gcd(x,y):
    r = 0
    if x > y:
        a = x
        b = y
    else:
        a = y
        b = x
        r = a % b
    while r != 0:
        a = b
        b = r
        r = a % b
    return b
再试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-4 22:30:58 | 显示全部楼层

>>> gcd(5,8)
1
>>> gcd(8,5)
5

这个似乎有点小问题,当把两个数字交换位置好跑出来的结果不一致了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-5 14:05:11 | 显示全部楼层

本来结果就不应该一致呀!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-5 21:48:41 | 显示全部楼层
wuqramy 发表于 2020-3-5 14:05
本来结果就不应该一致呀!

这个题是求输入的两个数的最大公约数,为什么调换顺序结果会不一样呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-5 21:51:01 | 显示全部楼层
爱骆骆联盟盟主 发表于 2020-3-5 21:48
这个题是求输入的两个数的最大公约数,为什么调换顺序结果会不一样呢?

看!
>>> gcd(5,8) #此时x = 5,y = 8
1
>>> gcd(8,5) #此时x = 8,y = 5
5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-19 09:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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