Вопрос №1766 от пользователя Renat в уроке «Деревья», курс «PHP: Построение абстракций»

Renat

Подскажите, почему (и в видео и в задании) применяется рекурсивный вызов, если можно при сравнении применить эту же итеративную функцию, т.е. для видео вызвать

if (isPair($element)) {
    $newAcc = $iter($element, $newAcc);
}
4 2

Kirill Mokevnin

Вы обратили внимание на то что мы изучаем декларативное программирование? ;) Мы не используем изменение состояние, что по сути означает, что мы не используем переменные как изменяемые величины.

2

Max Minchenko

Добрый день! Потратил пару дней на поиски решения и оно все никак мне дается =) Направьте заблудшего на путь истинный. Мой код:

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)'
0

Max Minchenko

Ребят уже почти ноябрь, а ответа еще нет)

0

Kirill Mokevnin

Добрый день Максим. Вы написали вопрос в чужом топике, а этот топик уже закрыт для менторинга. Если у вас есть вопрос, создавайте для этого всегда отдельный топик.

1

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
25 мая 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
25 мая 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
25 мая 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
25 мая 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
25 мая 5 месяцев