Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Vaderkos
77 / 77 / 5
Регистрация: 31.03.2015
Сообщений: 436
1

Заменить рекурсию на цикл

21.03.2017, 17:07. Просмотров 769. Ответов 3
Метки нет (Все метки)

Как можно заменить данную рекурсию на цикл?

C++
1
2
3
4
5
6
7
8
9
#define pc putchar_unlocked
void put (long long int num) {
    if (!num) {
        pc('0');
        return;
    };
    if (num/10) put(num/10);
    pc(num%10 + '0');
};
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2017, 17:07
Ответы с готовыми решениями:

заменить рекурсию на цикл
Здравствуйте. У меня есть рекурсивная ф-ия, но глубина вызова довольно большая, в итоге стек...

Как заменить цикл while на рекурсию?
Как сделать в даной функции, вычисления через рекурсию, а не через цикл... тут происходит...

Рекурсию в цикл
Здравствуйте. У меня есть рекурсивная ф-ия, но глубина вызова довольно большая, в итоге стек...

Найти значение формулы используя рекурсию и цикл
Народ, помогите с задачей. Найти значение формулы используя рекурсию и цикл (2 способами:...

заменить цикл for на цикл while
#include <iostream> using namespace std; int main() { int N, M, sum; cout <<...

3
_Ivana
4110 / 1900 / 237
Регистрация: 01.03.2013
Сообщений: 5,152
Записей в блоге: 22
21.03.2017, 18:39 2
1. Пишите описание задачи по-русски - перевести целое число в строку.

2. Пишите нормальный воспроизводимый кот, а не хрень с макросами:
C++
1
2
3
4
5
6
7
void pc(int x) { std::cout << x; }
 
void put (long long int num) {
    if (!num) return;
    if (num/10) put(num/10);
    pc(num%10);
};
3. По вопросу - красиво никак Потому что число хочется печатать с первых разрядов, а получаете вы их при разборе числа с последних. И рекурсия волшебным образом складывает их в системном стеке вызовов, формируя закадровую структуру данных. Поэтому чтобы сделать такое в цикле, надо эту структуру данных накостылить руками - массив/вектор/список/дек/стек/пофигу чё. Заполнить ее в порядке получения разрядов (в сумерках цикле) а потом выводить в обратном порядке (снова в сумерках цикле).
0
Vaderkos
77 / 77 / 5
Регистрация: 31.03.2015
Сообщений: 436
21.03.2017, 19:01  [ТС] 3
Меня интересует именно быстрый вывод через putchar или более быстрые аналоги(хотя тут уже дальше некуда вроде бы)
решение через cout или printf мне не подходит к сожалению
0
_Ivana
4110 / 1900 / 237
Регистрация: 01.03.2013
Сообщений: 5,152
Записей в блоге: 22
21.03.2017, 19:09 4
Vaderkos, ну вы же демонстрировали здравомыслие раньше Пихайте ваши путчары в реальных котов (я сам их пихаю, потому что принты это тормозное убожество, а цауты вообще плюсовый ужас, если речь про микроконтроллеры и жесткие тайм-слоты на отладочный вывод). Но здесь сферическая задача в вакууме - сделайте кота легко воспроизводимым для остальных.

ЗЫ и и тем более это никак не влияет на ваш вопрос и мой ответ к нему.
0
21.03.2017, 19:09
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2017, 19:09

заменить на цикл for
Как в этой программе заменить цикл do {..} while() на цикл for(){...}...

Как цикл for заменить на while?
#include &lt;stdio.h&gt; void getbin(unsigned int n) { for (int i = 0; i &lt; 32; i++) { if (n &amp;...

Заменить некоторые члены последовательности используя цикл for
Даны натуральное число n, целые числа а1,а2,...,аn. Заменить все больше семи члены...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.