递归函数总是返回未定义的JS

时间:2019-09-07 13:34:30

标签: javascript recursion

我设法创建了一个脚本,该脚本必须计算LCF( L 最大的 C ,通常是 F actor)。我的任务是为该算法创建脚本,因此,我无法选择其他脚本。但是我总是得到undefined的回报。我在做什么错了?

我已经用console.log检查了整个功能,并且工作正常。它会找到正确的LCF,并出现在if语句中,该语句应返回变量值和该值(甚至是数字)。
我已经检查了该变量的值,已经检查了该var的类型,一切都应该没问题,但是它不起作用。

const checking = (num1, num2, t) => {
  if (num1 % t === 0) {
    if (num2 % t === 0) {
      return t;
    } else {
      checking(num1, num2, t - 1);
    }
  } else {
    checking(num1, num2, t - 1);
  }
}

const bruteforce = (num1, num2) => {
  //Checking if numbers are equal
  if (num1 === num2) return num1;
  //If no, defining minimal one
  let t = 0;
  num1 > num2 ? t = num2 : t = num1;

  let answer = checking(num1, num2, t);
}

我希望输出var t值,但实际输出始终为undefined

2 个答案:

答案 0 :(得分:1)

在使用递归函数时,您应始终返回调用,以便答案可以向上移动:

const checking = (num1, num2, t) => {
  if (num1 % t === 0) {
    if (num2 % t === 0) {
      return t;
    } else {
      return checking(num1, num2, t - 1);
    }
  } else {
    return checking(num1, num2, t - 1);
  }
}

答案 1 :(得分:0)

当递归函数递归时,它不返回任何内容。它只是自称:

checking(num1, num2, t - 1);

但是对于该调用的结果没有任何作用。返回结果:

return checking(num1, num2, t - 1);