将两个小功能合而为一

时间:2019-10-13 20:30:05

标签: javascript

因此,我试图“编写一个具有数字并返回必须将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]));

1 个答案:

答案 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