
Python
Как вы поняли рекурсию?
Вот как это понять? Выглядит, как бред.

F(4): {n = 4}
F(n - 1): {n = 3}
F(n - 1): {n = 2}
F(n - 1): {n = 1}
F(n - 1): {n = 0}
{возврат}
write(n) {1}
F(n - 2): {n = -1}
{возврат}
{возврат}
write(n) {2}
F(n - 2): {n = 0}
{возврат}
{возврат}
write(n) {3}
F(n - 2): {n = 1}
F(n - 1): {n = 0}
{возврат}
write(n) {1}
F(n - 2): {n = -1}
{возврат}
{возврат}
{возврат}
write(n) {4}
F(n - 2): {n = 2}
F(n - 1): {n = 1}
F(n - 1): {n = 0}
{возврат}
write(n) {1}
F(n - 2): {n = -1}
{возврат}
{возврат}
write(n) {2}
F(n - 2): {n = 0}
{возврат}
{возврат}
{возврат}
В нормальном Pascal не существует процедуры print.
Роман Михайличенко
Я почти это понял, но всё равно это не может уложиться в голове. Я прям удивлён, вам даже не лень было это расписывать.
Александр Рудь
В паре мест просочилось F(n = 1) вместо F(n - 1)
Процедура вызывает себя, что тут непонятного?
Видел когда-нибудь вложенные друг в друга матрёшки?
Напиши рядом процедуру G с таким же параметром и таким же кодом внутри и вызывай её из F, так будет понятнее. При вызове процедуры из самой себя создаётся полная копия контекста исполнения, как если бы ты вызвал другую процедуру. Её переменная n - это другая переменная, не та же самая, что у вызывающей процедуры. Потом управление возвращается в ту точку, из которой ты вызвал, и в тот контекст, который был на момент вызова.
Вообще, изучение математики помогает в понимании таких вещей.
Видел когда-нибудь вложенные друг в друга матрёшки?
Напиши рядом процедуру G с таким же параметром и таким же кодом внутри и вызывай её из F, так будет понятнее. При вызове процедуры из самой себя создаётся полная копия контекста исполнения, как если бы ты вызвал другую процедуру. Её переменная n - это другая переменная, не та же самая, что у вызывающей процедуры. Потом управление возвращается в ту точку, из которой ты вызвал, и в тот контекст, который был на момент вызова.
Вообще, изучение математики помогает в понимании таких вещей.
Роман Михайличенко
Да, я вроде бы понимаю принцип. Но не могу понять вакханалии с числами, которая тут происходит.
Похожие вопросы
- Рекурсия, Последний шаг, Разрыв цепочки рекурсии
- Помогите: Задача на Рекурсия
- Необходимо вычислить сумму двух дробей a/v;d/c. Используйте рекурсию, чтобы найти общий знаменатель двух чисел.
- Как понять логику решения следующей задачи (ещё и "для начинающих" называется)?
- Как понять логику решения следующей задачи "ДЛЯ НАЧИНАЮЩИХ"?
- Функции в Python, как понять?
- Что такое "параметры функций" в Пайтоне? Я никак не могу понять
- Никак не могу понять как поступить =)
- Вопросы по программированию общие вопросы. Хочу понять логику. вопросы подробно описал в описании.
- помогите понять код языка программирования Питон