我已经看到了其他答案,但我正试图通过回调实现自己的实践。
“使用JavaScript语言,让函数MultiplicativePersistence(num)获取传递的num参数,该参数将始终为正整数并返回其乘法持久性,这是您必须将num中的数字相乘的次数,直到达到一个数字。例如:如果num为39,那么你的程序应该返回3,因为3 * 9 = 27然后2 * 7 = 14,最后1 * 4 = 4,你停在4。“
function MultiplicativePersistence(num) {
function multiply(n){
n.reduce(function(a,b){return a*b;});
}
var count =0;
while(num.toString().length > 1) {
num= num.split("");
num = multiply(num);
count++;
return count;
}
}
MultiplicativePersistence("39"); // Should return 3 but it's returning 1
答案 0 :(得分:4)
有3个错误。
num
应转换为字符串。multiply
函数应返回结果
function MultiplicativePersistence(num) {
function multiply(n){
return n.reduce(function(a,b){return a*b;});
}
var count =0;
while(num.toString().length > 1) {
num= num.toString().split("");
num = multiply(num);
count++;
}
return count;
}
alert(MultiplicativePersistence("39"));

答案 1 :(得分:1)
您可以使用以下解决方案来解决您的问题:
function persistenceB(num) {
var times = 0;
num = num.toString();
while (num.length > 1) {
times++;
num = num.split('').map(Number).reduce((a, b) => a * b).toString();
}
return times;
}
答案 2 :(得分:0)
function persistence(num) {
if(num.toString().length > 1){
var mult = 1;
var splitStr = num.toString().split('');
for(var i = 0; i<splitStr.length; i++) {
mult *= parseInt(splitStr[i]);
}
return 1 + persistence(mult);
} else{
return 0;
}