Javascript函数不返回/退出

时间:2016-11-16 02:16:50

标签: javascript function recursion

有人可以向我解释为什么这个递归函数不会在返回时退出。提前谢谢。

var numberArr = [5,4,3,2];

function  findCommon(x) {    
  x += numberArr[0];  
  for (var i = 1; i < numberArr.length; i++) {
    if((x % numberArr[i]) === 0) {
      continue;
    } else {
       findCommon(x);
    }    
  }
  console.log("done " + x);
  return x;
}

findCommon(0);

3 个答案:

答案 0 :(得分:0)

您的代码会在返回时退出,因为您可以看到是否稍微修改它以显示更多信息。

var numberArr = [5,4,3,2];

function  findCommon(x) {    
  x += numberArr[0];  
  for (var i = 1; i < numberArr.length; i++) {
    if((x % numberArr[i]) === 0) {
      console.log("Continuing: " + i)
      continue;
    } else {
      console.log("B: " + findCommon(x))
    }    
  }
  console.log("done " + x);
  return x;
}

console.log("A: " + findCommon(0));

答案 1 :(得分:0)

我用下面的代码实现了我的目的。关于如何避免返回全局var或其他方式的任何建议我可以做到这一点。

&#13;
&#13;
var numberArr = [5,4,3,2];
var y;

function  findCommon(x) {    
  x += numberArr[0];  
  for (var i = 1; i < numberArr.length; i++) {
    if((x % numberArr[i]) === 0) {
      console.log("continue " + x);
      continue;
    } else {
       console.log("not div " + x);
       findCommon(x);
       return y;
    }    
  }
  y = x;
  console.log("done " + x);
}

findCommon(0); 
&#13;
&#13;
&#13;

答案 2 :(得分:0)

尝试使用代码..代码中发生的事情真是太棘手了。实际上你的函数findcommon(x)正在调用自身,正在发生的是它运行当前的函数和调用的函数。这意味着如果我们一次调用findcommon(x),那么它将不会从当前不会结束。它逐个完成这两个功能。

var numberArr = [5,4,3,2];

function  findCommon(x) {    
  x += numberArr[0];  
  for (var i = 1; i < numberArr.length; i++) 
  {
    if((x % numberArr[i]) === 0) 
    {
      continue;
    } 
    else 
    {
       findCommon(x);
    }    
  }
  console.log("done " + x);
  return x;
}
//findCommon(3);
console.log("done " +findCommon(3));

例如:如果我从函数A调用函数B,它将完成B和A两者 就像你的函数findCommon(x);自称这么多次。这就是为什么它在recursive.hope中有所帮助。