Javascript 为什么这个函数获取的最大公约数不比哪个数大
我正在看公约数函数的例子 我看到这个是用欧几里德算法Javascript 为什么这个函数获取的最大公约数不比哪个数大,javascript,math,Javascript,Math,我正在看公约数函数的例子 我看到这个是用欧几里德算法 var gcd = function(a, b) { if (b == 0) { return a; } return gcd(b, a % b); }; console.log(gcd(126,553443)); 但是为什么在执行第一个递归调用之前,它不比较a和b之间哪个数字最大 我是说,为什么不呢 if (a > b) return gcd(a, b % a); else retur
var gcd = function(a, b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
};
console.log(gcd(126,553443));
但是为什么在执行第一个递归调用之前,它不比较a
和b
之间哪个数字最大
我是说,为什么不呢
if (a > b)
return gcd(a, b % a);
else
return gcd(b, a % b);
这是另一个例子。我看不到交换发生在哪里如果
a
小于b
,那么a%b
将是a
。因此,在下一次迭代中,a
将小于b
试试看。12%20是12,因为商是0,余数是12。在
返回gcd之前添加console.log(a,b)
,看看发生了什么。是的,我想这是个愚蠢的问题