我设法创建了一个脚本,该脚本必须计算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
答案 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);