我正在做一个简单的leetcode问题,我们将一个数字添加到一个数组中。我的逻辑运行良好,但返回值未定义。控制台给出了正确的答案。为什么?我该如何修复它?
var plusOne = function(digits) {
addNumber(digits.length - 1, 1, digits)
function addNumber(index, value, digitsArr) {
let sum = digitsArr[index] + value
if(sum > 9) {
let onesDigit = parseInt(sum.toString().charAt(1))
digitsArr[index] = onesDigit
let twosDigit = parseInt(sum.toString().charAt(0))
addNumber(index-1, twosDigit, digitsArr)
} else {
digitsArr[index] = sum
console.log(digitsArr)
return digitsArr
}
}
};
console.log(plusOne([1,2,9]))
4条答案
按热度按时间ogsagwnx1#
return
函数的价值addNumber
,如果您不从函数返回某些内容,那么js将返回undefined
含蓄地2) 您必须从
addNumber
在任何情况下都起作用。你可以做两件事中的一件return digitsArr
从功能addNumber
不仅来自else
部分返回
addNumber(index - 1, twosDigit, digitsArr);
从if
返回digitsArr
从else
.主要部分是从函数返回一些完全取决于您希望对代码执行什么操作的内容。
g52tjvyc2#
plusone不返回任何内容,也不返回addnumber(索引-1、twosdigit、digitsarr)
尝试:
mw3dktmi3#
您正在调用该函数
plusOne
哪个inturn调用内部函数addNumber
. 它不返回任何值。因此,与其只是打电话addNumber(digits.length - 1, 1, digits)
您必须像这样返回该值return addNumber(digits.length - 1, 1, digits)
. 因为父函数期望执行的结果。所以你必须用一个return
陈述也在里面
addNumber
当sume大于调用的9 rether时的函数addNumber(index - 1, twosDigit, digitsArr)
您必须返回执行的结果,并且return addNumber(index - 1, twosDigit, digitsArr)
. 与前一种情况一样,这里它的执行器也期望函数返回响应。jbose2ul4#
在javascript中,缺少显式return语句的函数将返回undefined。您正在调用一个函数plusone,该函数反过来调用(不返回)addnumber,但这两个函数都不显式返回任何内容,请尝试在这两种情况下都返回addnumber。