leetcode 258. 各位相加 js 实现
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。
示例 1:
输入: num = 38
输出: 2
解释: 各位相加的过程为:
38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2
由于 2 是一位数,所以返回 2。
示例 1:
输入: num = 0
输出: 0
提示:
0 <= num <= 231 - 1
链接:https://leetcode.cn/problems/add-digits
/** * @param {number} num * @return {number} */ // 递归 var addDigits = function(num) { if(num<10){ return num } num = num+""; let l = num.length-1; let res = 0; while(l>=0){ res = res+(num.charAt(l)-0) l-- } return addDigits(res) }; // 迭代 var addDigits = function(num) { // 当 num>10 才需要计算,否则直接返回 num while (num >= 10) { let sum = 0; // 计算方式,每次取数字的最低位加到 sum 上,再将数字除以 10 向下取整(即为排除最低位之后的数) while (num > 0) { sum += num % 10;// 取数字的最低位加到 sum 上 num = Math.floor(num / 10);// 取除最低位之外的数,当只有一位时,则 num=0,退出循环 } // num可能为 1 位数以上, 赋值为最新计算结果,进行迭代计算 num = sum; } return num; }; // 公式实现 var addDigits = function(num) { return (num - 1) % 9 + 1; };
转载请注明出处:https://www.cnblogs.com/beileixinqing/p/16672223.html