谁能解释一下这段代码的工作原理GCD,Recursive,Euclidian algorighm

时间:2016-12-15 03:44:54

标签: algorithm recursion iteration

任何人都可以帮我解释一下这段代码的工作原理吗?我试图理解递归的工作原理以及如何编写它。这里是新生,谢谢。

def gcdRecur(a, b):
'''
a, b: positive integers

returns: a positive integer, the greatest common divisor of a & b.
'''

if b == 0:
    return a
else:
    return gcdRecur(b,a % b)

obj = gcdRecur(9,12)
print (obj)

2 个答案:

答案 0 :(得分:0)

这是Euclid's algorithm的实现。

简单地说,%是模运算符,它返回第一个操作数除以第二个的余数,因此a % b将9除以12,其为0,其余为9。递归交替参数,因此下一个操作将是12 % 9 == 3,然后是9 % 3 == 0,因为3除以9而没有余数。 3也是除以12,因为它是自身和9的总和,它除了没有余数的数字。

答案 1 :(得分:0)

这必须是重复的,但这是欧几里德算法的实现。基本原则是a和b的最大公因子(其中b