因此,我试图“编写一个具有数字并返回必须将num中的数字相乘以达到单个数字的次数的Single()函数。例如Single(456)// 4 * 5 * 6 = 120,1 * 2 * 0 = 0 //需要两个循环才能达到一位数字,因此返回值为2。
我的问题是,现在我必须放入单个数字数组而不是数字。所以我可能需要将两个功能结合起来。
function numberToArray(num) {
var tmpString = num.toString();
var tempArray = [];
for (var i = 0; i < tmpString.length; i++) {
tempArray.push(tmpString[i]);
}
return tempArray;
}
function reachSingle(tempArray) {
var count = 0;
var k = 1;
for (var i = 0; i < tempArray.length; i++) {
k *= tempArray[i];
}
count++;
if (k <= 10) return count;
else {
var newArray = numberToArray(k);
return count + reachSingle(newArray);
}
}
document.write(reachSingle([2, 9, 3, 7, 6]));
答案 0 :(得分:2)
对于小于10的数字,可以采用退出条件的递归方法,在这种情况下返回零。否则,返回一个加数字的乘积结果。
function reachSingle(n) {
if (n < 10) return 0;
return 1 + reachSingle(Array.from(n.toString()).reduce((a, b) => a * b));
}
console.log(reachSingle(29376)); // 4