Форум программистов, компьютерный форум CyberForum.ru

Вопрос по рекурсии - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ "М" на "Н" http://www.cyberforum.ru/cpp-beginners/thread233602.html
Требуется написать программу на С++, заменяющюю в строке S все буквы "М" на "Н" и обратно. При отсутствии букв "М" и "Н", должно выдаваться соответствующее сообщение.
C++ Функции пользователя Функции пользователя Составить программу, которая решает задачу с такими дополнительными условиями: • размерность матрицы должна вводиться при выполнении программы; • само решение задачи должно быть оформлено в виде функции, которой передается матрица и ее размерность. Заполнить матрицу ЛП, от центра по спирали: влево - вниз - вправо - вверх. С ++ пожалуйста http://www.cyberforum.ru/cpp-beginners/thread233599.html
C++ Новичек
Что значит выполняется за время NlogN?
C++ operator
Всем привет, опять непонятка в книге, дошел до оператора operator и ничего не понял, для чего он нужен, что он делает, то есть как он перегружает символы и как им пользоваться, привидите пожалуйста пример, заранее благодарен!
C++ gljuki programi http://www.cyberforum.ru/cpp-beginners/thread233586.html
ustanovil na novij komp m.v.s. 2005, eta programa rabotala na drugom kompe otli4no sdes vidajot o6ibku pri vvode # include<iostream.h>
C++ Повторения Дана задача: Дан одномерный массив из 150 случайных целых чисел в диапазоне от 14 до 37 включительно. Вывести те числа, которые наиболее редко встречаются в массиве и количество их повторений. Подсчет количества повторений для числа оформить в виде функции. Я уже почти все сделал, но нужно, чтобы программа выводила количество повторений каждого числа, и если будет несколько наиболее редких... подробнее

Показать сообщение отдельно
aleksand
21 / 9 / 2
Регистрация: 18.06.2011
Сообщений: 185
30.10.2012, 00:08     Вопрос по рекурсии
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Потому, что мы возвращаемся не в начало функции, а в то место откуда в прошлый раз прервали её выполнение и вызвали reverse. А это конец if'а и переход из пятой на девятую строчку, потому как reverse уже выполнен и мы идём дальше.
return же расположен в блоке else и вызовется тогда и только тогда, когда if не сработает, то есть на последнем символе.
Можно поподробней пожалуйста, не могу уловить мысль никак. Вопрос походу комментария повторю ещё раз, т.к. в голове логику у себя простроить не могу.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Четвертый вызов:
void reverse (char *s)// *s равно '\0'
 
{if (*s)// это условие не выполняется
reverse (s+1);
else
return;// тут понятно
 
cout << *s;
}
 
Третий вызов:
void reverse (char *s)// *s равно 'o' - тут тоже понятно, а вот дальше понять не могу почему всё же cout << *s мы выполняем, а вот там где if(*s) и до return мы не выполняем
 
{if (*s)
reverse (s+1);
else
return;
 
cout << *s;// вот сюда и возвращаемся. Выводим на экран *s которое равно 'o'
}// заканчиваем третий вызов и возвращаемся во второй вызов
 
Текущее время: 11:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru