Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
<?php
function countdown(int $n): string
{
if ($n === 0) {
return 'go';
}
return $n . countdown($n - 1);
}
echo countdown(3), "\n";321go
- Ждать
123go, будто первым идёт самый глубокий вызов: каждый вызов ставит свой$nперед результатом внутреннего, поэтому строку открывает3внешнего вызова. - Ждать, что базовый случай напечатается первым:
return 'go'отдаёт значение вызывающему, и каждый вызов выше ставит перед ним свой$n.
- Что сделает
countdown(-1)и как от этого защититься? - Как изменить строку 8, чтобы программа напечатала
go123?