我要去哪里?在返回单位数字之前,尝试不打印时数字


function AdditivePersistence(num) {
    var count = 0;
    while (num.toString().length > 1) {
        count++;
        var num = calcVal(num);
    }
    return count;
    function calcVal(str) {
        var sum = 0;
        var arr = str.toString().split("");
        for (var i of arr) {
            sum = sum + arr[i];
        }
        return parseInt(sum.toString());
    }
}
console.log(AdditivePersistence(2233));

calcValue函数返回数组数的总和,而循环重复直到返回的数字长度为1。

当您用于... of ... of, i是数字而不是数字索引。另外,您需要解析数字。

  sum = sum + parseInt(i, 10); // i is the number, not the index

由于您使用i作为索引,因此calcVal()的结果始终是长度> 2的字符串,这意味着在您的情况下是无限的环路。

固定代码:

function AdditivePersistence(num) {
  var count = 0;
  
  while (num.toString().length > 1) {
    count++;
    num = calcVal(num);
  }
  
  return count;
  function calcVal(str) {
    var sum = 0;
    var arr = str.toString().split("");
    for (var i of arr) {
      sum = sum + parseInt(i, 10); // i is the number, not the index
    }
    
    return sum;
  }
}
console.log(AdditivePersistence(2233));

最新更新