Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задача по PHP (создание функции)

Никита Максутов Ученик (162), на голосовании 3 года назад
Сделайте функцию getDivisors, которая параметром принимает число и возвращает массив его делителей (чисел, на которое делится данное число).

Казалось бы, задачка простая, но все равно не могу решить =)
Голосование за лучший ответ
Витя Мыслитель (6562) 3 года назад
в чем проблема бежишь от 2 до переданного числа и делишь переданное число на счетчик цикла, если поделилось без остатка значит это делитель заносишь его в массив
Сергей Просветленный (42667) 3 года назад
Никита МаксутовУченик (162) 3 года назад
А если потом я хочу через цикл foreach разобрать массив и вывести через echo.. Я попробовал сделать это в отдельной функции, но опять ничего не получилось, выводит только 1-ое число. Пытался по всякому сделать, ничего не помогло.

function getNumber($num) {
foreach($num as $number) {
return $number;
}
}

Например:
echo getNumber((getDivisors(10))); - выведет только 1.
Сергей Просветленный (42667) Так return завершает мгновенно выполнение функции и выводит её результатом то, что передано. Вот он вам и выводит первое число. А дальше… всё. Он вывел и грохнул функцию. Вам нужно либо выводить прямо в цикле, либо сконструировать выводную переменную и передавать из функции уже её. https://pastebin.com/sxrhyZ0p
Никита МаксутовУченик (162) 3 года назад
Помогите решить еще одну задачу, тоже создание функции, только нужно реализовать ее с помощью рекурсии, без цикла.

Условия: Дано число. Сложите его цифры. Если сумма получилась более 9-ти, опять сложите его цифры. И так, пока сумма не станет однозначным числом (9 и менее).

Я пробовал ее сделать, на протяжении полу-часа переписывал код не 1 раз, пытался по всякому реализовать, но у меня не получается, точнее, не то что нужно.

Вот мой код (на котором я остановился):

recursionNum(99);

function recursionNum($num) {
echo array_sum(str_split($num, 1)) . "";
if($num-- > 9) {
recursionNum($num);
}
}
Сергей Просветленный (42667) > Если сумма получилась более 9-ти, опять сложите его цифры. И уменьшать перед этим число на единицу? https://pastebin.com/4eNjRuz9 У вас что-то непонятное, начиная с оператора ветвления. Вы же должны сравнивать с девяткой не исходное число, а сумму его цифр. А уменьшать на единицу вы должны не при сравнении, а при передачи числа повторно на функцию.
Похожие вопросы