题目描述: 小明有一个新奇的想法,就是有个非负整数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/基数的位权次幂 取整后对基数取余。