为了账号安全,请及时绑定邮箱和手机立即绑定

请问这段求最大公约数的函数逻辑是什么?有大神给解释下吗?

def gcd(a, b):
    if b == 0:
        return a
    return gcd(b, a % b)


正在回答

3 回答

百度一下辗转相除法

0 回复 有任何疑惑可以回复我~

因为一个数最大的因数是其本身,即 x / 1 = x,再次就是它的一半。

所以通过反复比较a,b两个数,当a除以b余数为0时,即找到了它们之间的最大公约数。

比如:gcd(25,15)=>gcd(15,10)=>gcd(10,5)=>gcd(5,0),返回的a值5就是结果。

再如:gcd(15,25)=>gcd(25,15)=>gcd(15,10)=>gcd(10,5)=>gcd(5,0)


6 回复 有任何疑惑可以回复我~
#1

慕侠8496208

清晰明了,赞
2019-03-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

请问这段求最大公约数的函数逻辑是什么?有大神给解释下吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信