鱼C论坛

 找回密码
 立即注册
查看: 971|回复: 3

[已解决]python22讲课后题求助

[复制链接]
发表于 2020-6-14 21:08:32 | 显示全部楼层 |阅读模式

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

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

x
请教大佬们,图片中画红线处如何理解,重新调用该函数的时候为什么是讲y的值赋给x、x%y的值赋给y。
最佳答案
2020-6-14 21:19:43


直接那个实例给你带着看吧,这样最好理解:

将 x = 4  和  y = 6 代入

  1. def gcd(x, y):  
  2.     # 开始时 x = 4, y = 6  
  3.     # 第一次递归 x = 6 y = 4
  4.     # 第二次递归 x = 4 y = 2

  5.     if y:
  6.     # 刚开始 y = 6 条件成立执行if代码块
  7.     # 第一次递归 y = 4 继续进入 if 代码块
  8.     # 第二次递归 y = 2 继续进入 if 代码块
  9.     # 第三次递归 y = 0 条件不成立则进入else 代码块

  10.         return gcd(y, x % y)
  11.     # 进入第一次递归 gcd(6,4%6)即 gcd(6,4)
  12.     # 进入第二次递归 gcd(4,6%4) 即gcd (4,2)
  13.     # 进入第三次递归 gcd (2,4%2)即 gcd (2,0)
  14.     else:
  15.         return x # 第三次递归返回 x = 2
  16.    
  17.     # 然后依次返回 先从第三次递归开始 gcd(2,0)  -> gcd(4,2) -> gcd(6,4) -> gcd(4,6)

  18. print(gcd(4, 6))
复制代码


1592139910(1).png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-14 21:11:56 | 显示全部楼层
本帖最后由 liuzhengyuan 于 2020-6-14 21:19 编辑

辗转消除发呀(欧几里得算法)
你把它换成普通的不也是
t = x
x = y
y = t%y

或者
x, y = y, x%y 嘛
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-14 21:17:34 | 显示全部楼层
这是一种递归的思想,在函数的内部调用函数的自身,y的值赋给x、x%y的值赋给y是因为这个函数的形参是(x,y)用位置参数传入,y对应的不就是x吗,x%y对应的不就是y吗,不要在意x,y就是个变量而已,不要被迷惑了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-14 21:19:43 | 显示全部楼层    本楼为最佳答案   


直接那个实例给你带着看吧,这样最好理解:

将 x = 4  和  y = 6 代入

  1. def gcd(x, y):  
  2.     # 开始时 x = 4, y = 6  
  3.     # 第一次递归 x = 6 y = 4
  4.     # 第二次递归 x = 4 y = 2

  5.     if y:
  6.     # 刚开始 y = 6 条件成立执行if代码块
  7.     # 第一次递归 y = 4 继续进入 if 代码块
  8.     # 第二次递归 y = 2 继续进入 if 代码块
  9.     # 第三次递归 y = 0 条件不成立则进入else 代码块

  10.         return gcd(y, x % y)
  11.     # 进入第一次递归 gcd(6,4%6)即 gcd(6,4)
  12.     # 进入第二次递归 gcd(4,6%4) 即gcd (4,2)
  13.     # 进入第三次递归 gcd (2,4%2)即 gcd (2,0)
  14.     else:
  15.         return x # 第三次递归返回 x = 2
  16.    
  17.     # 然后依次返回 先从第三次递归开始 gcd(2,0)  -> gcd(4,2) -> gcd(6,4) -> gcd(4,6)

  18. print(gcd(4, 6))
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-21 22:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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