鱼C论坛

 找回密码
 立即注册
查看: 660|回复: 7

[已解决]python 022 讲课后题 递归求最大公约数问题~

[复制链接]
发表于 2018-10-14 19:48:21 | 显示全部楼层 |阅读模式

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

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

x

没看懂,求鱼油们帮忙详细介绍一下这几行代码的运行流程~

  1. def gcd(x, y):
  2.     if y:
  3.         return gcd(y, x%y)
  4.     else:
  5.         return x
  6.    
  7. print(gcd(4, 6))
复制代码


最佳答案
2018-10-14 20:01:16
gcd(4,6):
if 6:
return gcd(6,2)  # 4 % 6 == 2
if 2:
return gcd(2, 0)  # 6 % 2 == 0
if 0:
return (x==2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-14 20:01:16 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +1 鱼币

gcd(4,6):
if 6:
return gcd(6,2)  # 4 % 6 == 2
if 2:
return gcd(2, 0)  # 6 % 2 == 0
if 0:
return (x==2)

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
13572044595 + 5 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-10-14 20:02:59 | 显示全部楼层

回帖奖励 +1 鱼币

如果函数第二个参数是0,就返回第一个参数
不是就将第一个换成第二个参数,第二个参数变成第一个对第二个参数的余数

每次递归公约数是不变的,x,y越来越趋近公约数,直至整除,出现0,找到公约数

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
13572044595 + 5 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-14 20:15:47 | 显示全部楼层
claws0n 发表于 2018-10-14 20:01
gcd(4,6):
if 6:
return gcd(6,2)  # 4 % 6 == 2

非常感谢,你的实例,结合楼下的描述,我似乎理解了,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-14 20:19:54 | 显示全部楼层
塔利班 发表于 2018-10-14 20:02
如果函数第二个参数是0,就返回第一个参数
不是就将第一个换成第二个参数,第二个参数变成第一个对第二个 ...


亲~,又是你来回答我的问题,非常感谢~,

ps:
你回复的第二句“不是就将第一个换成第二个参数,第二个参数变成第一个对第二个参数的余数”,
希望你能加个标点符号,
我第一眼看去以为是“不是就将第一个换成第二个参数,第二个参数变成第一个对第二个参数的余数”,愣了半天
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-14 21:46:53 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-15 09:23:41 | 显示全部楼层

回帖奖励 +1 鱼币

楼主加油!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-15 12:39:29 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 12:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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