我正在努力寻找两个数字的最大公共分隔符。我的算法如下:
function gcd(a,b){
var temp = a;
if(b > a){
a = b;
b = temp;
}
var remainder = a % b;
console.log("remainder: "+ remainder);
while(remainder){
a = b;
b = remainder;
gcd(a,b);
}
return b;
}
在while循环中,指示调用gcd(a,b)会导致程序崩溃:
while(remainder){
a = b;
b = remainder;
gcd(a,b);
}
但是返回gcd(a,b)而不是调用它:
while(remainder){
a = b;
b = remainder;
return gcd(a,b);
}
我不明白这些差异。为什么第一个案例在作为余数达到基本情况时停止 - > 0?