|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.01.2011, 17:55 | #1 |
Пользователь
Регистрация: 25.11.2010
Сообщений: 39
|
Рекурсия
Добрый вечер форумчане. Вот такая проблема не могу понять как действуют рекурсивные функции.
к примеру эта: Код:
|
08.01.2011, 18:08 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Рекурсия, это если функция вызывает саму себя.
В твоем случае вызывается функция f1 с параметром. Если он более 1 то формируется новый параметр, и опять вызывается эта же функция, но уже с новым параметром. Получается матрешка - в каждой последующей функции есть такая же функция но с другим параметром. Когда в последней вложенной функции-матрешке сработает условие, она перестанет вызывать себя, и завершится. Это приведет к завершению предидущих функций-родителей, поскольку после выхова нет операторов кроме return summ, вот эта строчка и будет скопом закрывать выполнение всех функций, одну за другой от самой мелкой матрешки до самой большой, возвращая в матрешку побольше результат.
I'm learning to live...
|
08.01.2011, 18:25 | #3 |
Пользователь
Регистрация: 25.11.2010
Сообщений: 39
|
к примеру я передаю функции значение 4;
то при первом вызове функция получает значение 4; далее 3;потом 2, 1. матрешка начинает складываться: 2*1, возвращается значение, потом 3*2 итд. тоесть функция вызывает саму себя пока не будет нарушено какое то определенное условие, каждый раз создается новая копия функции принимающая новый аргумент. все верно? Stilet большое спасибо. Последний раз редактировалось Ev1L; 08.01.2011 в 18:27. |
08.01.2011, 18:48 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рекурсия | gafruslan | Помощь студентам | 1 | 21.12.2010 17:43 |
Рекурсия | Alexsey1991 | Помощь студентам | 1 | 12.05.2010 10:24 |
Рекурсия))) | NewMen | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 02.05.2010 14:24 |
Рекурсия на С++ | Nitriyc | Помощь студентам | 0 | 28.04.2010 17:22 |
Рекурсия | Jasper92 | Помощь студентам | 1 | 27.04.2010 16:58 |