$result = reduce($number);
function reduce($number) {
$new_number = 0;
if($number < 10) {
return $number;
}
$q = floor($number / 10 );
$r = $number % 10;
$new_number = $q + $r;
if($new_number <= 9) {
return $new_number;
}
else {
reduce($new_number);
}
}
我想用数字加上数字
例如,如果我通过10,它应该返回1 + 0 = 1
如果我通过10实话,这是有效的
但是当我通过100时没有工作。
答案 0 :(得分:4)
这应该适合你:
只需将您的号码拆分为str_split()
的数组,然后使用array_sum()
将所有数字加在一起。
echo array_sum(str_split($number));
修改强>
如果您不想要校验和,但只需要一个数字,那么您也不必编写那么多代码。只需反复调用该函数,直到array_sum()
等于或小于9。
function reduceToOneSingleDigit($result) {
$result = str_split($result);
while(array_sum($result) > 9)
return reduceToOneSingleDigit(array_sum($result));
return array_sum($result);
}
echo reduceToOneSingleDigit(99);
答案 1 :(得分:2)
代码太多,请看下一个
print sum(125); // 8
// 5 12
// 2 1
// 1 + ~>0
function findSum($num)
{
if($num == 0)
return 0;
return $num%10 + findSum(floor($num/10));
}
所以,即使100000或000001也是1,按照你想要的方式工作,但如果参数为0001000则会有麻烦
答案 2 :(得分:1)
您在结尾附近缺少单词return
。它应该是这样的:
return reduce($new_number);