Есть функция с рекурсивным вычитанием. На каждой рекурсии появляется промежуточный ответ (0, 1, 1 и 2). Что добавить в код, чтобы отображался не только окончательный ответ, но и промежуточные ответы?
<?php
function minus($n) {
if ($n <=0) return;
return $n - minus ($n-1);
}
echo minus(3);
?>
Добавил картинку с решением:
Чтобы обратить порядок вывода результатов, нужно делать вывод после рекурсивного спуска:
function minus($n) {
if ($n <= 0) {
echo "minus($n) = 0", PHP_EOL;
return 0;
}
$res = $n - minus($n-1);
echo "minus($n) = $res", PHP_EOL;
return $res;
}
minus(3);
Результат:
minus(0) = 0
minus(1) = 1
minus(2) = 1
minus(3) = 2
Можно отделить tracelog от вывода, передав массив для сохранения промежуточных результатов по ссылке:
function minus($n, &$log) {
if ($n <= 0) {
$log[] = 0;
return 0;
}
$res = $n - minus($n-1, $log);
$log[] = $res;
return $res;
}
$log = [];
minus(3, $log);
echo implode(', ', $log); // 0, 1, 1, 2
<?php
function minus($n) {
echo($n); // Все что необходимо.
if ($n <=0) return;
return $n - minus ($n-1);
}
echo minus(3);
?>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме
Пытаюсь получить курсор из процедуры, но почему-то получаю ошибку
пишу описание к дипломному проекту хотелось бы у вас уточнить правильность моей информации по Java, знаю как работает, а вот описать правильно...
Иногда зачем-то пишут javaxswing