Цикл - это условный (или безусловный) переход в обратном направлении без сохранения контекста, рекурсия выкладывает контекст стопочкой (стеком) так, чтобы при обратном раскручивании рекурсии на каждом шаге было видно, что здесь происходило до дальнейшего забуривания. Поэтому цикл может быть бесконечным, а глубина рекурсии ограничена размером памяти.
Я представил себе рекурсию, как миссию, которую надо выполнить в многоэтажном здании, начиная с самого высокого этажа: каждый раз закончить выполнение задания на данном этаже мешает необходимость спуститься на этаж вниз, чтобы что-то сделать там, и так до первого этажа.
хорошая метафора, но будет лучше, если начинать с первого этажа и подниматься наверх, при этом верхние этажи нужно достраивать по одному при каждом подъеме на этаж выше, а при спуске - за собой разрушать.
По-моему, смысл ханойских башен как раз в том, что, выполнив задание по разборке пирамиды (n-1), нужно вернуться на этаж n (чтобы переместить базовый диск, нижний), а только затем выполнить задание по сборке пирамиды (n-1) на новом месте. То есть нельзя торопиться разрушать этажи.
рекурсия это сведение большой задаче к нескольким более простым подзадачам и в дальнейшем поступаем с каждой подзадачей в точности также до тех пор, пока не подзадача не станет настолько проста, что мы будем в состоянии ее решить
( ... )
В обратном потому, что выполнили последовательность действий (тело цикла) - откатились (в обратном направлении) в исходную точку. Если продолжать метафоры - пробежать полосу препятствий и вернуться в начало для новой пробежки.
Счетчик (если цикл на счетчике) занимает единственную ячейку памяти, которая используется для всех итераций. Плюс, его может вообще не быть (тогда цикл будет бесконечным). Обратное движение - это движение после выполнения каждой итерации - возврат из конца итерации в начало к старту (взвод пружины).
Рекурсия же по сути, начинает выполняться с конца (чтобы выполнить это действие, нужно сначала выполнить это же действие).
Reply
Reply
Reply
То есть нельзя торопиться разрушать этажи.
Reply
Reply
Reply
Reply
Она съела кусок мяса - он ее убил,
В яму закопал, крест поставил, написал: ..."
это бесконечная рекурсия )
Reply
Reply
Reply
Reply
Reply
Reply
Рекурсия же по сути, начинает выполняться с конца (чтобы выполнить это действие, нужно сначала выполнить это же действие).
Reply
Reply
Leave a comment