Pavel SE

Что-то я не понимаю.. Итеративный процесс - это когда есть функция, содержащая в себе рекурсивную функцию, которая в свою очередь на каждом витке делает какие-то действия? Результат этих действий сохраняется в переменной, которая передается на следующий виток рекурсии. И так пока не выполнится определенное условие, после которого функция вернет накопленный результат. Т.е. рекурсия разворачивается, но не сворачивается. Я не могу понять, что именно делает процесс итеративным? "Несворачиваемость" рекурсии?

3 2

Процесс это то как происходят вычисления, а функция его выражает. Итеративный процесс может быть построен на рекурсии или без нее (с использованием циклов). Итеративным его делает можно сказать "несворачиваемость", вычисления в таком процессе идут в одну сторону. Вычисляется первый шаг, дальше все полученные данные прокидываются на следующую итерацию, и так до конца. Итеративный процесс характеризуется наличием аккумулятора, некоей переменной, которая накапливает результат и возвращается в конце.

3

Спасибо, все стало ясно) Но имеется еще один вопрос. В лекции сказано об оптимизации хвостовой рекурсии. Она же работает только в итеративном процессе? Мы же не можем оптимизировать то, с чем в последствии будем оперировать. Так вот, что хотелось узнать - нужно ли стараться всегда приводить свои решения (за рамками Хекслета в смысле) к итеративному виду?

0

На самом деле, в реальном коде, рекурсией пользуются редко, функции высшего порядка могут решать почти все задачи. А там где ипользуется рекурсия, то да, чаще всего приводят к итеративному. Но это скорее удел функциональных языков, в императивных просто пользуются циклами.

0

Похожие вопросы

Kirill Svirid 05 апреля 2019 →

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

Павел Михайлов 24 февраля 2019 →

// removed код такой, локально и на repl.it выполняется верно, но в среде пишет ошибку PHP Fatal error: M...

Андрей Соколов 17 мая 2018 →

Добрый день! подскажите почему не проходят тесты, вроде пишет что переполнение стека рекурсивынх вызовов. Н...

Руслан Хамидуллин 01 февраля 2018 →

В примечании к видео if ($exp == 0) { return $acc; } - почему здесь не 1 возвращается?

Фёдор Лаврентьев 29 ноября 2017 →

Решаю практику. Вот само задание: Реализуйте рекурсивную функцию smallestDivisor, используя линейно-итерати...

Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →