使用两种以上的方法添加数字的位数JavaScript

我们需要编写一个JavaScript函数,该函数必须以数字表示,并反复将其数字求和,直到将其转换为一个数字为止。

我们将通过两种方法解决此问题-

方法1:使用循环

此解决方案利用while循环来递归地将数字相加。

示例

const num = 123456;
const addDigits = (num = 1) => {
   let sum = num;
   while(sum % 10 !== sum){
      let sum1 = 0;
      while(sum > 0){
         sum1 += sum % 10;
         sum = Math.floor(sum / 10);
      }
      sum = sum1;
   };
   return sum;
};
console.log(addDigits(num));

方法2:使用恒定时间解(O(1)时间复杂度)

该解决方案利用了数学的Congruence公式,建议读者探索该公式以更好地理解该解决方案。

示例

const num = 123456;
const addDigits = (num = 1) => {
   let predicate = (num - 1) % 9;
   return ++predicate;
};
console.log(addDigits(num));

输出结果

控制台中这两种方法的输出将是-

3