鱼C论坛

 找回密码
 立即注册
查看: 3276|回复: 4

利用欧几里得算法定义一个函数,求最大约数,问题!!

[复制链接]
发表于 2016-12-30 10:46:09 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 Little.L 于 2016-12-30 10:51 编辑

这是小甲鱼python 零基础的第十七课课后作业
我最开始的想法是这样的,但是总是无法得到想要的答案
2.png
后来看了小甲鱼的答案,发现是这样的
3.png 3.png
我的觉得两者并没有什么区别,但是小甲鱼的程序就能得到想要的结果,我的就是不行!求解!

最佳答案

查看完整内容

你没用中间变量,当a=b时,a的值就丢了。 可以这样改:
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-30 10:46:10 | 显示全部楼层
你没用中间变量,当a=b时,a的值就丢了。
可以这样改:
  1. >>> def gcd(a, b):
  2.         while a % b != 0:
  3.                 a, b = b, a % b
  4.         return b
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-30 11:04:16 | 显示全部楼层
本帖最后由 wei_Y 于 2016-12-30 11:06 编辑

算法要理清思路,要怎么做。
a%b作为判断条件,b如果是0就会报错。再有,你先一步改变了b,到了b = a%b时,b始终都是0.

这种过程比较短的推荐这个网站。
http://pythontutor.com/visualize.html#mode=edit
将两个代码贴上去看看每一步的执行过程就有一个很清晰的概念了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-30 11:05:30 | 显示全部楼层
冬雪雪冬 发表于 2016-12-30 10:46
你没用中间变量,当a=b时,a的值就丢了。
可以这样改:

我绞尽脑汁想了好久,就是没有发现问题所在!
感谢感谢!!
这下我突然明白为什么小甲鱼定义 r = a%b 要放在 a 和 b 定义之前
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-30 21:17:29 | 显示全部楼层
wei_Y 发表于 2016-12-30 11:04
算法要理清思路,要怎么做。
a%b作为判断条件,b如果是0就会报错。再有,你先一步改变了b,到了b = a%b时 ...

谢谢~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-13 03:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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