鱼C论坛

 找回密码
 立即注册
查看: 1082|回复: 2

[已解决]使用递归编写一个函数,利用欧几里得算法求最大公约数,例如 gcd(x, y) 返回值为参...

[复制链接]
发表于 2020-7-30 16:58:36 | 显示全部楼层 |阅读模式

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

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

x
def gcd(x, y):
    if y:
        return gcd(y, x%y)
    else:
        return x
   
print(gcd(4, 6))

求解释 ,谢谢谢谢谢谢
最佳答案
2020-7-30 20:57:39
本帖最后由 ouyunfu 于 2020-7-30 21:00 编辑

这里计算原理依赖于下面的定理:
两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。

  1. def gcd(x, y):
  2.     if y: # y不等于0,执行下一语句,否则执行else
  3.         print('gcd({},{})'.format(y,x%y)) #这样打印希望有助于理解
  4.         return gcd(y, x%y) #这里是一个函数迭代,即x=y, y=x%y, 直到y=0, 返回x
  5.     else:
  6.         return x
  7.    
  8. print(gcd(4, 6))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-30 17:09:26 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-30 20:57:39 | 显示全部楼层    本楼为最佳答案   
本帖最后由 ouyunfu 于 2020-7-30 21:00 编辑

这里计算原理依赖于下面的定理:
两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。

  1. def gcd(x, y):
  2.     if y: # y不等于0,执行下一语句,否则执行else
  3.         print('gcd({},{})'.format(y,x%y)) #这样打印希望有助于理解
  4.         return gcd(y, x%y) #这里是一个函数迭代,即x=y, y=x%y, 直到y=0, 返回x
  5.     else:
  6.         return x
  7.    
  8. print(gcd(4, 6))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 10:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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