bazaspb
|
||||||
Вопрос по рекурсии24.01.2011, 22:55. Показов 3600. Ответов 10
Метки нет Все метки)
(
Добрый вечер. В книжке С++ базовый курс Шилдта стр 175-176 есть пример Отображение строки в обратном порядке с помощью рекурсии (функция reverse)
Функция reverse () проверяет, не передан ли ей в качестве параметра указатель на нуль, которым завершается строка, Если нет, то функция reverse () вызывает саму себя с указателем на следующий символ в строке. Этот "закручивающийся" процесс повторяется до тех пор, пока той же функции не будет передан указатель на нуль. -- Пока понятно. Когда, наконец, обнаружится символ конца строки, пойдет процесс "раскручивания", т.е. вызванные ранее функции начнут возвращать значения, и каждый возврат будет сопровождаться "довыполнением" метода, т.е. отображением символа s. В результате исходная строка посимвольно отобразится в обратном порядке. -- Вот тут непонятно. Во-первых, void-функции вроде как не возвращают значения. Во-вторых - что такое "довыполнение" метода? |
24.01.2011, 22:55 | |
Ответы с готовыми решениями:
10
Вопрос по рекурсии Вопрос насчёт рекурсии в цикле маленький вопрос по рекурсии |
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
|
||||||
24.01.2011, 23:02 | ||||||
когда вызовется функция для символа '\0' с помощью оператора return произойдет выход из нее и будет выводиться символ. Дополнение метода это вывод символа
1
|
![]() ![]() 4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
||||||
24.01.2011, 23:16 | ||||||
![]() Решение
Попробую объяснить:
Допустим есть строка str [] = "eto" Первый вызов:
8
|
Модератор
![]() ![]() ![]() ![]() ![]() 12841 / 7588 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
|||||||
25.01.2011, 00:25 | |||||||
2
|
21 / 9 / 0
Регистрация: 18.06.2011
Сообщений: 185
|
||||||
29.10.2012, 23:11 | ||||||
Объясните кто-нибудь пожалуйста, почему когда мы возвращаемся в третий вызов, то у нас выполняется код cout << *s; Хотя *s отлична от конца строки и должна выполняться строчка if (*s) reverse (s+1); Как вообще тогда потом ещё мы возвращаемся и во второй вызов?
0
|
![]() |
||
29.10.2012, 23:27 | ||
return же расположен в блоке else и вызовется тогда и только тогда, когда if не сработает, то есть на последнем символе.
0
|
21 / 9 / 0
Регистрация: 18.06.2011
Сообщений: 185
|
|||||||
30.10.2012, 00:08 | |||||||
0
|
![]() |
||
30.10.2012, 02:10 | ||
Ты писал:
- Сначала выполняется if (*s) reverse (s+1); При этом вызывается reverse (s+1), которая выводит задом на перёд строку без первого символа - После этого возвращаемся в конец 16-й строчки уже после вызова reverse - и выходим из if, так других команд кроме reverse в этой ветке if-a нет (RETURN не вызовется, потому что мы продолжаем исполнять тот if, который начали до рекурсивного вызова reverse (s+1); ) - далее переходим на 20ю строчку и выводим первый символ (который оказывается выведен после вывода-наоборот всего слова в конце) В итоге получается строку, выведенную целиком наоборот. Логика одной фразой: "Чтобы вывести строку наоборот, надо вывести строку без первой буквы наоборот и после этой операции в конец добавить первую букву"
0
|
21 / 9 / 0
Регистрация: 18.06.2011
Сообщений: 185
|
||
30.10.2012, 10:58 | ||
0
|
![]() 3869 / 2785 / 780
Регистрация: 29.06.2020
Сообщений: 10,181
|
|
27.04.2024, 16:06 | |
1
|
27.04.2024, 16:06 | |
Помогаю со студенческими работами здесь
11
Вопрос по SetParent (поэтому, наверное, это вопрос к NickStaves) VBulletin [ВОПРОС]: Меню и вопрос при регистрации Рекурсии Рекурсии Рекурсии Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
|
Полностью асинхронный счётчик на логике (сумматорах) трёх состояний и асинхронных регистрах трёх состояний. Структура "электронный Buttom Up"
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution
В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
|
Автоматизация Amazon Web Services (AWS) с Boto3 в Python
py-thonny 25.04.2025
Облачные вычисления стали неотъемлемой частью современной ИТ-инфраструктуры, а Amazon Web Services (AWS) занимает лидирующие позиции среди провайдеров облачных услуг. Управление многочисленными. . .
|
Apache Kafka vs RabbitMQ в микросервисной архитектуре
ArchitectMsa 25.04.2025
Современная разработка ПО всё чаще склоняется к микросервисной архитектуре — подходу, при котором приложение разбивается на множество небольших, автономных сервисов. В этой распределённой среде. . .
|
Параллельное программирование с OpenMP в C++
NullReferenced 24.04.2025
Параллельное программирование — подход к созданию программ, когда одна задача разбивается на несколько подзадач, которые могут выполняться одновременно. Оно стало необходимым навыком для. . .
|
Цепочки методов в C# с Fluent API
UnmanagedCoder 24.04.2025
Современное программирование — это не только решение функциональных задач, но и создание кода, который удобно поддерживать, расширять и читать. Цепочки методов и Fluent-синтаксис в C# стали мощным. . .
|
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
|
Реализация конвейеров машинного обучения с Python и Scikit-learn
AI_Generated 23.04.2025
Мир данных вокруг нас растёт с каждым днём, и умение эффективно обрабатывать информацию стало необходимым навыком. Специалисты по машинному обучению ежедневно сталкиваются с задачами предобработки. . .
|
Контроллеры Kubernetes Ingress: Сравнительный анализ
Mr. Docker 23.04.2025
В Kubernetes управление входящим трафиком представляет собой одну из ключевых задач при построении масштабируемых и отказоустойчивых приложений. Ingress — это API-объект, который служит вратами. . .
|
Оптимизация кода Python с Cython и Numba
py-thonny 23.04.2025
Python прочно обосновался в топе языков программирования благодаря своей простоте и гибкости. Разработчики любят его за читабельность кода и богатую экосистему библиотек. Но у этой медали есть и. . .
|