Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

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

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