Форум программистов, компьютерный форум, киберфорум
Наши страницы

Инкремент в рекурсии - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Статические библиотеки и Visual studio http://www.cyberforum.ru/cpp-beginners/thread636283.html
1) Создала новый проект как статическая библиотека без предкомпилированных заголовков. 2) Написала некоторые функции. 3) Выставила релиз версию. 4) Собрала проект. На выходе получила lib...
C++ "Порядковый номер" для каждого экземпляра класса? Добрый вечер! Кто знает C++. Подскажите пожалуйста, сейчас застрял на задаче, где нужно создать "порядковый номер" для каждого создаваемого экземпляра класса. В коде который ниже на экран... http://www.cyberforum.ru/cpp-beginners/thread636280.html
C++ Найти номера наиболее и наименее удаленных друг от друга точек
В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в следующем порядке: x1, у1, х2, у2, x3, y3 и т.д. Найти номера наиболее и наименее...
C++ Дефрагментация и FSCTL_MOVE_FILE
Делал так как пишет мсдн http://msdn.microsoft.com/en-us/library/windows/desktop/aa363911(v=vs.85).aspx откуда брать параметры для FSCTL_MOVE_FILE int GetClusters(const char* name,bool d) {...
C++ Алгоритм быстрой сортировки против пузырька http://www.cyberforum.ru/cpp-beginners/thread636246.html
Решил проверить утверждение, что быстрая сортировка намного эффективнее пузырьковой. Результат пузырька увидел почти сразу, а быстрой сортировки ждал пару минут и выключил. В чём дело? Ошибка в...
C++ Непонятное выражение Что тут написано? p = array; подробнее

Показать сообщение отдельно
The_Immortal
1552 / 488 / 8
Регистрация: 04.04.2009
Сообщений: 1,891

Инкремент в рекурсии - C++

12.08.2012, 00:08. Просмотров 569. Ответов 6
Метки (Все метки)

Ребят, что-то не могу врубиться.
Задача: используя рекурсию выводить введенный ранее текст в обратном порядке.

Вот рабочая версия:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
using namespace std;
 
void reverse(char *);
 
    char a[256];
    cout << "Enter the string: ";
    cin >> a;
    reverse(a);
 
    system("pause");
 
void reverse(char *str) {
    if (*str) {
        reverse(str + 1); //!!!
    }
    else
        return;
    cout << *str;
}
Пытался заменить
C++
1
reverse(str + 1);
на
C++
1
reverse(++str);
- но таким образом происходит потеря первого знака при выводе. Т.е. если я введу изначально "12345", то получу в ответ: " 5432". Почему так происходит?

Также заменял вышеупомянутую строчку на
C++
1
reverse(str++);
- но таким образом смещение по строке вообще не происходит и в итоге получаю переполнение цикла... Тоже не особо понимаю почему. Но вероятно из-за того, что в функцию передается сразу str, а ++ игнорируется. И так в бесконечный цикл и впоследствии stack overflow.
Но почему не срабатывает тогда
C++
1
reverse(++str);
? Ведь это аналогично
C++
1
reverse(str + 1);
... Или нет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru