Здравствуйте, товарищи! Помогите найти ошибку в решении, вот условие задачи: Дано число. Сложите его цифры. Если сумма получилась более 9-ти, опять сложите его цифры. И так, пока сумма не станет однозначным числом (9 и менее). Вот мое решение: PHP: <?php $num = 7564134846; //произвольное число присваиваем переменной $num function lowNumber($num) //рекурсивная функция { $arr = str_split($num, 1); //разбиваем параметр в массив по 1 символу $result = array_sum($arr); //подсчитываем сумму цифр if ($result > 9) { //если больше 9, то уйдет в рекурсию lowNumber($result); } else { //если меньше или равно 9, return $result; //то вернет конечное число-результат } } var_dump( lowNumber($num) ); //вернет NULL, а должно возвращать число Где червоточина, где изъян в моей логике? Почему функция вместо нормального числа возвращает NULL? Сразу хочу сказать, что решения другими способами не интересуют. Мне важно понять, что я конкретно здесь сделал не так.
Этот код на русский язык переводится: если result больше 9, вызвать рекурсивно саму себя, а результат выбросить в мусорное ведро.
Спойлер: на всякий случай PHP: function lowNumber($num){ if($num <= 9) return $num; // если есть условие при котором функция должна делать "ничего" // то такое условие должно быть как можно ближе к началу функции return lowNumber(array_sum(str_split($num, 1))); } $num = 7564134467745678488; echo lowNumber($num);
Коль пошла такая пьянка)) PHP: function lowNumber($num) { return $num <= 9 ? $num : lowNumber(array_sum(str_split($num, 1))); }