Leave a comment

1i7 January 6 2020, 22:03:48 UTC
Цикл - это условный (или безусловный) переход в обратном направлении без сохранения контекста, рекурсия выкладывает контекст стопочкой (стеком) так, чтобы при обратном раскручивании рекурсии на каждом шаге было видно, что здесь происходило до дальнейшего забуривания. Поэтому цикл может быть бесконечным, а глубина рекурсии ограничена размером памяти.

Reply

bluxer January 6 2020, 23:21:16 UTC
Я представил себе рекурсию, как миссию, которую надо выполнить в многоэтажном здании, начиная с самого высокого этажа: каждый раз закончить выполнение задания на данном этаже мешает необходимость спуститься на этаж вниз, чтобы что-то сделать там, и так до первого этажа.

Reply

1i7 January 7 2020, 00:01:58 UTC
хорошая метафора, но будет лучше, если начинать с первого этажа и подниматься наверх, при этом верхние этажи нужно достраивать по одному при каждом подъеме на этаж выше, а при спуске - за собой разрушать.

Reply

bluxer January 7 2020, 12:39:31 UTC
По-моему, смысл ханойских башен как раз в том, что, выполнив задание по разборке пирамиды (n-1), нужно вернуться на этаж n (чтобы переместить базовый диск, нижний), а только затем выполнить задание по сборке пирамиды (n-1) на новом месте.
То есть нельзя торопиться разрушать этажи.

Reply

deep_econom January 10 2020, 23:08:36 UTC
рекурсия это сведение большой задаче к нескольким более простым подзадачам и в дальнейшем поступаем с каждой подзадачей в точности также до тех пор, пока не подзадача не станет настолько проста, что мы будем в состоянии ее решить ( ... )

Reply

bluxer January 11 2020, 15:36:06 UTC
Это как метод дихотомии, только на плоскости.

Reply

deep_econom January 11 2020, 15:48:42 UTC
ну да

Reply

deep_econom January 10 2020, 23:17:13 UTC
"У попа была собака, он ее любил,
Она съела кусок мяса - он ее убил,
В яму закопал, крест поставил, написал: ..."

это бесконечная рекурсия )

Reply

bluxer January 11 2020, 15:36:27 UTC
От которой 0 толку.

Reply

deep_econom January 11 2020, 15:47:46 UTC
прсто пример

Reply

bluxer January 6 2020, 23:22:06 UTC
А почему цикл - это в обратном направлении? Мне казалось, что в прямом.

Reply

1i7 January 7 2020, 00:03:49 UTC
В обратном потому, что выполнили последовательность действий (тело цикла) - откатились (в обратном направлении) в исходную точку. Если продолжать метафоры - пробежать полосу препятствий и вернуться в начало для новой пробежки.

Reply

bluxer January 7 2020, 12:40:53 UTC
Но счетчик растет последовательно (или уменьшается тоже последовательно). Так что я бы не назвал это обратным движением...

Reply

1i7 January 7 2020, 13:00:08 UTC
Счетчик (если цикл на счетчике) занимает единственную ячейку памяти, которая используется для всех итераций. Плюс, его может вообще не быть (тогда цикл будет бесконечным). Обратное движение - это движение после выполнения каждой итерации - возврат из конца итерации в начало к старту (взвод пружины).

Рекурсия же по сути, начинает выполняться с конца (чтобы выполнить это действие, нужно сначала выполнить это же действие).

Reply

bluxer January 7 2020, 13:29:42 UTC
Воистину.

Reply


Leave a comment

Up