课程
/后端开发
/Python
/python进阶
def gcd(a,b): if b == 0: return a return gcd(b,a%b) 我的问题是 从哪里体现出了 a 与 b 先相除一次 例如 a 为 3 , b 为 12
2016-12-11
源自:python进阶 6-5
正在回答
这个函数是求最大公约数的,不是约分的。
无论a = 3, b = 12.还是a = 12 , b = 3.最后返回的都是3.如果我自己手动走程序没错的话。你可以试一下
没看到定义要求 a>b 啊?而且 a = 12 我能理解 , b = 3 是为什么? b 不是应该 = a%b 么?如果按我说的例子,a%b 应该为 6 吧?
豆芽菜3
慕粉2014408783 提问者 回复 豆芽菜3
其实你这么举例子是错误的,a>b是定义中要求的,你给定a=3, b=12,在执行一次gcd(a, b)之后,a=12, b=3, 相当于a, b 互换,还是a>b,此时继续执行gcd(a, b),可得a=3, b=0, 由于b=0,此时return a, 将得到a的值,即3, 为最大公约数。
慕粉2014408783 提问者
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计