一个关于数字累积的问题

Posted 我曾如此奢望

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个关于数字累积的问题相关的知识,希望对你有一定的参考价值。

题目描述:
小明有一个新奇的想法,就是有个非负整数n,不停地将各个位上的数字相加,一直加到只剩一个一位的整数。例如:给出n=37。相加的过程如下:3 + 7 = 10   1 + 0 = 1。因为1只剩下一个数字,所以返回1。
 
输入:
--非负整数n
 
输出:
--返回相加得到的一位整数
 
举例:
--输入:38  输出:2
<?php

function calc($n){
   $len = strlen($n);
   $num = 0;
   
   for($i=$len; $i >0 ;$i--){
       $num += intval($n/pow(10,$i-1))%10;
   }
   
   if($num >= 10){
      return  calc($num);
   }
   return $num;
}
$n =  12345;

$num = calc($n);

echo $num;

举例:如123 如何快速获取1   2   3

php版

获取3:123%10

获取2:intval(123/10)%10

获取1:intval(123/10/10)%10

总结:快速获取一个数字(x)各个位上的数值,可以用 x/基数的位权次幂  取整后对基数取余。

以上是关于一个关于数字累积的问题的主要内容,如果未能解决你的问题,请参考以下文章

查找累积和反应打字稿

如何累积每个数字? JavaScript [关闭]

累积和 - 选择层次结构的部分

使用 LINQ 在 C# 中查找数字数组的累积和

Python Numpy累积/差异[重复]

片段和活动之间没有传递值