为什么我的gcd算法导致无限循环?

时间:2017-11-08 19:28:27

标签: algorithm

我正在努力寻找两个数字的最大公共分隔符。我的算法如下:

  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?

0 个答案:

没有答案