|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.09.2015, 21:35 | #1 |
Пользователь
Регистрация: 05.09.2015
Сообщений: 16
|
Recursion. 2 integeres are multiplied together.
Объясните пжл выполнение данной рекурсии пошагово.
Например, возьмем recur(3,2) и recur(2,4) Код:
|
06.09.2015, 21:47 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Так вы и объясните. А кто-нибудь может быть поправит если что.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
06.09.2015, 21:54 | #3 |
Пользователь
Регистрация: 05.09.2015
Сообщений: 16
|
Как я понимаю:
recur(2,2)+2 --> recur(1,2) +2. Не понимаю что происходит в recur(1,2) и recur(2,2) |
06.09.2015, 22:27 | #4 |
Пользователь
Регистрация: 05.09.2015
Сообщений: 16
|
Вроде разобрался:
x is a counter here. recur(3,2) Enter x : 3 Enter y : 2 X = 3 Y = 2 X = 2 Y = 2 X = 1 Y = 2 Result is 6 recur(2,4) X = 2 Y = 4 X = 1 Y = 4 Result is 8 |
06.09.2015, 22:27 | #5 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Код:
Представим алгоритм пунктами входные данные x и y 1) если x или y равно 0, то идем в пункт 6 2) если x равен 1, то идем в пункт 7 3) вызываем функцию recur с параметрами x-1 и y 4) к возвращенному значению прибавляем y 5) возвращаем полученную сумму 6) возвращаем 0 7) возвращаем y Теперь пробежимся по примеру. Допустим, вызвали recur ( 3 , 2 ) вызов 1: x = 3 y = 2 1) x == 0 или y == 0? 3 == 0 || 2 == 0 ? Нет, значит идем дальше 2) x == 1 ? 3 == 1 ? Нет, значит идем дальше 3) Вызываем recur ( 3 - 1 , 2 ), пометим это место как 1.3, переходим к разделу "вызов 2" 4) Функция вернула 4. получаем 4 + y = 4 + 2 = 6 5) Возвращаем значение 6 в точку вызова вызов 2: x = 2 y = 2 1) x == 0 или y == 0? 2 == 0 || 2 == 0 ? Нет, значит идем дальше 2) x == 1 ? 2 == 1 ? Нет, значит идем дальше 3) Вызываем recur ( 2 - 1 , 2 ), пометим это место как 2.3, переходим к разделу "вызов 3" 4) Функция вернула 2, значит получим 2 + y = 2 + 2 = 4 5) Возвращаем в точку вызова (1.3) значение 4 вызов 3: x = 1 y = 2 1) x == 0 или y == 0? 1 == 0 || 2 == 0 ? Нет, значит идем дальше 2) x == 1 ? 1 == 1 ? Да, значит в пункт 7 идем 7) Возвращаем в точку вызова (2.3) значение y, то есть 2 |
06.09.2015, 22:36 | #6 |
Пользователь
Регистрация: 05.09.2015
Сообщений: 16
|
Спасибо, очень доходчиво.
|