接受正参数num的函数并返回其乘法持久性,这是必须将num中的数字乘以它到达单个数字的次数。
var persistenceCount = 0;
function persistence(num) {
var arr = _parseToNumericArray(num);
if (_checkLength(arr)) {
return persistenceCount;
} else {
persistenceCount++;
var newNum = _getMultiple(arr);
persistence(newNum);
}
}
function _parseToNumericArray(num) {
var n = num.toString().split("");
return n.map(function(elem) {
return parseInt(elem);
});
}
function _checkLength(arr) {
return arr.length === 1;
}
function _getMultiple(arr) {
return arr.reduce(function(a, b) {
return a * b;
});
}
console.log(persistence(39)); // Getting output as undefined
答案 0 :(得分:2)
就像 @Keith 所说,你忘记了返回值。
var persistenceCount = 0;
function persistence(num) {
var arr = _parseToNumericArray(num);
if (_checkLength(arr)) {
return persistenceCount;
} else {
persistenceCount++;
var newNum = _getMultiple(arr);
return persistence(newNum);
}
}
function _parseToNumericArray(num) {
var n = num.toString().split("");
return n.map(function(elem) {
return parseInt(elem);
});
}
function _checkLength(arr) {
return arr.length === 1;
}
function _getMultiple(arr) {
return arr.reduce(function(a, b) {
return a * b;
});
}
console.log(persistence(39)); // Outputs 3
答案 1 :(得分:0)
其他地方没有退货声明。所以返回undefined。
默认情况下,在JavaScript中,如果没有返回任何内容,函数总是返回undefined。