我有以下函数,它找到2个整数的最大公约数。我不明白返回的greatCommonDivisor中发生了什么(b,(a%b));一部分。
如果我做了greatCommonDivisor(8,12),我得到4这是正确的,但当我试图评估返回的greatCommonDivisor(b,(a%b));部分我得到(12,(8%12)),这简化为(12,0)这如何等于4?
// Finds greatest common divisor
function greatestCommonDivisor(a, b) {
if (b == 0) {
return a;
}
return greatestCommonDivisor(b, (a % b));
}
答案 0 :(得分:3)
该函数使用递归来调用自身,直到它满足返回实际答案的基本条件。
在greatestCommonDivisor(8, 12)
的情况下,会发生以下情况:
答案 1 :(得分:1)
这是一个递归函数。它不返回两个值,它在用不同(较小)参数反复调用自身后返回a
,直到b
等于0
(意思是,你不能分割或取模数了。)
答案 2 :(得分:0)
这是找出两个数之间最大公约数的基本算法。
该函数使用另外两个参数返回对自身的调用,而不是按照您的想法返回两个值(b,(a%b)):)