Вопрос №1766 от пользователя Renat в уроке «Деревья», курс «PHP: Построение абстракций»
Подскажите, почему (и в видео и в задании) применяется рекурсивный вызов, если можно при сравнении применить эту же итеративную функцию, т.е. для видео вызвать
if (isPair($element)) {
$newAcc = $iter($element, $newAcc);
}
Вы обратили внимание на то что мы изучаем декларативное программирование? ;) Мы не используем изменение состояние, что по сути означает, что мы не используем переменные как изменяемые величины.
Добрый день! Потратил пару дней на поиски решения и оно все никак мне дается =) Направьте заблудшего на путь истинный. Мой код:
function reverse($list)
{
$iter = function ($list, $acc) use (&$iter) {
if (is_null($list)) {
return $acc;
}
$elem = car($list);
if(isPair($elem)) {
$newAcc = cons(cons(car($elem), $iter(cdr($elem), null)), $acc);
} else {
$newAcc = cons($elem, $acc);
}
return $iter(cdr($list), $newAcc);
};
return $iter($list, null);
}
Ответ:
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'(((4, 5), 6), 5, (2, 3), 1)'
+'((6, (5, 4)), 5, (3, 2), 1)'
Ребят уже почти ноябрь, а ответа еще нет)
Добрый день Максим. Вы написали вопрос в чужом топике, а этот топик уже закрыт для менторинга. Если у вас есть вопрос, создавайте для этого всегда отдельный топик.
Используйте Хекслет по максимуму!
- Задавайте вопросы по уроку
- Проверяйте знания в квизах
- Проходите практику прямо в браузере
- Отслеживайте свой прогресс
Зарегистрируйтесь или войдите в свой аккаунт
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.







