我正在做一个简单的 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]))
1) return
function 的值addNumber
,如果你不从函数返回一些东西,那么 JS 将undefined
隐式返回
return addNumber(digits.length - 1, 1, digits);
2)addNumber
在每种情况下,您都必须从函数返回值。你可以做两件事之一
return digitsArr
从功能addNumber
而不仅仅是从else
部分。addNumber(index - 1, twosDigit, digitsArr);
从返回if
并digitsArr
从返回else
。主要部分是从函数中返回一些完全取决于你想用代码做什么的东西。
var plusOne = function(digits) {
return 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;
}
return digitsArr;
}
};
console.log(plusOne([1, 2, 9]));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句