Другие языки программирования и технологии

Помогите мне с рекурсивной функцией!

Объясните мне пожалуйста! Я не могу понять эту функцию. Сколько в интернете читал, не помогло!
Ну, если на пальцах: допустим сумма элементов. Есть у тебя 1, 2 и 3, и есть функция, которая считает сумму этих чисел: Ф (и) = Ф (и-1) + х. То есть напрямую она работает так:
Ф (1) = 1;
Ф (2) = Ф (1) + 2 = 1 + 2 = 3;
Ф (3) = Ф (2) + 3 = (Ф (1) + 2) + 3 = 1 + 2 + 3 = 6.
Ты в программе пытаешься вычислить сумму всех элементов Ф (3), для этого программа должна сначала вычислить Ф (2), для того чтобы вычислить Ф (2) она сначала вычисляет Ф (1). Таким образом, получается, что для получения результата функция вычисляет сама себя:
Ф (3) = Ф (2) + 3
Программа пока не имеет значения Ф (2) и начинает его вычислять:
Ф (2) = Ф (1) + 2
Программа пока не имеет значения Ф (1) и начинает его вычислять:
Ф (1) = 1
Функция дошла до предела, т. е. получено конкретное значение и все известно, опять вызывать саму себя не надо. Пошел обратный ход: Ф (2) у нас было Ф (1) + 2, но теперь Ф (1) уже известно, оно подставляется и получается конкретное значение: 1 + 2 = 3.
Теперь считается Ф (3), так как все предыдущие обращения к функции уже отработали и можно рассчитать уже то, что надо было изначально: Ф (3) = 3 + 3 = 6.
В данном примере важно понимать, что функция задается в общем виде. Если человек видя Ф (3) понимает, что надо сложить первые три элемента, то программа видит, что для вычисления суммы трех элементов надо узнать сумму первых двух и прибавить к нему третий элемент.
Muslim Yurii
Muslim Yurii
8 526
Лучший ответ
Николай Морозов СПАСИБО ВАМ БОЛЬШОЕ! Я ТЕПЕРЬ РАЗОБРАЛСЯ!
Это функция, которая вызывает саму себя. Это все, что нужно знать о рекуррентных финкциях в первом приближении.
Во втором приближении нужно знать, что в такой функции должен быть предусмотрен выход из рекурсии.
А в третьем - что этот выход должен быть неминуем при некотором конечном количестве итераций.
Владимир Кузин Это ему не поможет.
Это не одна функция.
И если чтение в интернете тебе не помогает, то тут тебе тоже не помогут. Этот сайт, увы, тоже в интернете.
Может, для начала попробуешь пересказать, что ты понял?
Чтобы понять рекурсию, надо понять рекурсию.
Виталий Бек
Виталий Бек
15 192