了解返回2个值的JavaScript函数
我有一个函数,可以找到2个整数的最大公约数。我不明白返回最大公约数(b,(a%b))中发生了什么;部分 如果我做了最大公约数(8,12),我得到了4,这是正确的,但是当我试图计算返回的最大公约数(b,(a%b));第一部分得到(12,(8%12)),它简化为(12,0),这怎么等于4了解返回2个值的JavaScript函数,javascript,recursion,Javascript,Recursion,我有一个函数,可以找到2个整数的最大公约数。我不明白返回最大公约数(b,(a%b))中发生了什么;部分 如果我做了最大公约数(8,12),我得到了4,这是正确的,但是当我试图计算返回的最大公约数(b,(a%b));第一部分得到(12,(8%12)),它简化为(12,0),这怎么等于4 // Finds greatest common divisor function greatestCommonDivisor(a, b) { if (b == 0) { return a;
// Finds greatest common divisor
function greatestCommonDivisor(a, b) {
if (b == 0) {
return a;
}
return greatestCommonDivisor(b, (a % b));
}
这是一个递归函数。它不返回两个值,它在使用不同(较小)参数反复调用自身后返回
a
,直到b
等于0
(这意味着不能再除法或取模)。这是一个递归函数。它不返回两个值,在使用不同(较小)参数反复调用自身后返回a
,直到b
等于0
(这意味着,您不能再除法或取模)。函数使用递归调用自身,直到满足返回实际答案的基本条件为止
在最大公约数(8,12)
的情况下,出现以下情况:
函数使用递归调用自身,直到满足返回实际答案的基本条件 在
最大公约数(8,12)
的情况下,出现以下情况:
这是求两个数之间最大公约数的基本算法
该函数使用另外两个参数返回对自身的调用,而不是像您所想的那样返回两个值(b,(a%b))。这是一个基本算法,用于找出两个数字之间的最大公约数
该函数使用另外两个参数返回对自身的调用,而不是像您所想的那样返回两个值(b,(a%b))
8%12
是8
(而不是0
),因此下一个调用是最大公因子(12,8)
。然后你有(8,12%8)
,它是(8,4)
,等等,直到b
是0
并且a
被返回。8%12
是8
(不是0
),所以下一个调用是最大公因子(12,8)
。然后你有(8,12%8)
,它是(8,4)
,等等,直到b
是0
并且a
被返回。直到b==0
,实际上:)应该是,我同意,但是‘污染。直到b==0,实际上。。)应该是,我同意,但是“污点”。