使用递归将数字减少到个位数

agr*_*riz 1 php recursion numbers

$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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想按数字求和
例如,如果我通过了 10,它应该返回 1+0 = 1
如果我通过了 10,则这有效
,但当我通过 100 时,则不起作用。

Riz*_*123 5

这应该适合你:

只需将您的数字分成一个数组str_split(),然后使用array_sum()将所有数字加在一起。

echo array_sum(str_split($number));
Run Code Online (Sandbox Code Playgroud)

编辑:

如果您不需要校验和,但只需要一位数,那么您也不必编写那么多代码。只需一遍又一遍地调用该函数,直到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);
Run Code Online (Sandbox Code Playgroud)