我在这个话题上看到了一堆其他的帖子,但在
javascript中没有.这是我的代码
var theNumber = function digitAdd (base,exponent) { var number = 1; for (i=0; i < exponent; i++) { var number = base * number; } return number } function find(theNumber) { var sum=0; parseInt(theNumber); while(theNumber>0) { sum=sum+theNumber%10; theNumber=Math.floor(theNumber/10); } document.writeln("Sum of digits "+sum); } find(theNumber (2,50));
我得到正确的答案,我只是不完全明白第二个功能,即while语句.任何帮助将不胜感激.谢谢!
解决方法
第二个函数使用模运算符来提取最后一个数字:
1236 % 10 = 1236 - 10 * floor(1236 / 10) = 1236 - 1230 = 6
当提取最后一位数字时,从数字中减去:
1236 - 6 = 1230
数字除以10:
1230 / 10 = 123
每次重复此循环时,最后一位数字被切断并加到总和中.
如果左手侧小于右侧(这将发生任何1位数字),则循环中断时,模运算符返回单位数:
1 % 10 = 1
这是领先数字如何添加到总数.
一个较少数字的替代方法是:
function sumDigits(number) { var str = number.toString(); var sum = 0; for (var i = 0; i < str.length; i++) { sum += parseInt(str.charAt(i),10); } return sum; }
它确实是你想要做的,它是迭代数字的数字(通过将其转换为字符串).