我写了这个 sum 函数来习惯编写递归函数。
我认为当我完成写作时它会起作用,但最终的总和值变得不确定。
此函数中没有异步部分,但此函数的返回值未定义,我不明白为什么...
我究竟做错了什么?
谁能告诉我如何解决这个问题?
谢谢!!
function sum() {
var numbers = [...arguments];
if (numbers.length === 0) {
return 0;
}
if (numbers.length === 1) {
// it shows 15 here!!
console.log(numbers[0])
// But it returns undefined... Why!?
return numbers[0];
}
var summedValue = numbers[0] + numbers[1];
var restNumbers = numbers.slice(2);
sum(summedValue, ...restNumbers)
}
console.log(sum(1, 2, 3, 4, 5)) //undefined
return numbers[0];
不返回undefined
,它返回正确的值(在您的情况下为15)。
但是,您的递归函数不会向 返回任何内容console.log
,使其成为
return sum.apply(null, [summedValue].concat(restNumbers))
演示
function sum() {
var numbers = Array.from(arguments);
if (numbers.length === 0) {
return 0;
}
if (numbers.length === 1) {
// it shows 15 here!!
console.log(numbers)
// But it returns undefined... Why!?
return numbers[0];
}
var summedValue = numbers[0] + numbers[1];
var restNumbers = numbers.slice(2);
return sum.apply(null, [summedValue].concat(restNumbers))
}
console.log(sum(1, 2, 3, 4, 5)) //undefined
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句