Валера Дубилет
декабрь 2017.
146

Какая разница между рекурсией, корекурсией и итерацией?

Ответить
Ответить
Комментировать
0
Подписаться
0
1 ответ
Поделиться
  1. Итерацией называется такой способ организации обработки данных, при котором действия многократно повторяются, не приводя при этом к рекурсивным вызовам программ (функций). Итеративный процесс постоянно говорит «я сейчас посчитаю все что можно и продолжу» на каждом шаге. Ему не нужно ничего запоминать вне вызова, он всегда считает все в первый возможный момент, и каждый шаг рекурсии может существовать в изоляции от прошлых, потому что вся информация передается из шага в шаг.
  2. Рекурсией называется такой способ организации обработки данных, при котором  функция вызывает сама себя или непосредственно, или из других функций. Рекурсивный процесс постоянно говорит «я это запомню и потом посчитаю» на каждом шаге рекурсии. «Потом» наступает в самом конце.
  3. Корекурсия процесс, подобный рекурсии, но не свёртывающую структуру данных (уменьшение значения аргумента можно назвать свёртыванием) , а «развёртывающую» результат на основе изначальных аргументов (пример - бесконечный список). Корекурсия - это когда мы создаём структуру данных на основе самой себя. Например, чтобы получить бесконечный  список единиц нужно к единице добавить (прикрепить) список единиц (список единиц использует список единиц), полученная бесконечная структура данных  не вычисляется без необходимости но ей можно пользоваться. На практике в строгих языках необходимо заранее знать количество элементов списка, что заставляет в месте создания списка знать лишнюю деталь реализации. Либо приходится создавать какой-нибудь генератор. Здесь же мы можем просто создать бесконечный список, а нужную часть из него возьмут тогда, когда она потребуется.
6
0
Прокомментировать
Ответить