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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
colya
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 12
#1

заменить рекурсию на цикл - C++

12.02.2013, 15:11. Просмотров 843. Ответов 2
Метки нет (Все метки)

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

Вот сама ф-ия:

C++
1
2
3
4
5
6
7
8
9
10
void f1 (int num)
{
arr [num] = 0;
 
for (vector <int>::iterator it = data [ num ].begin (); it < data [ num ].end (); it++)
    {
    if (arr [*it - 1]) f1 (*it - 1);
    arr [*it - 1] = 0;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2013, 15:11     заменить рекурсию на цикл
Посмотрите здесь:

Заменить рекурсию на цикл - C++
Как можно заменить данную рекурсию на цикл? #define pc putchar_unlocked void put (long long int num) { if (!num) { ...

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

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

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

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

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

std::map (заменить цикл на грамотный алгоритм) - C++
Привет! Привожу пример: struct Info { Info() : magicNumber(0), age(0) {} Info(int magicNumber, int age) :...

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

Заменить оператор goto на цикл, если это возможно - C++
Есть простой таймер #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; int main(){ ...

Цикл: заменить нулями все четные цифры данного числа - C++
Помогите написать код!:help: Дано n-значное число longint. Заменить нулями все четные цифры в нём и составить программу.

Задача на рекурсию - C++
Дано число. Вывести все цифры этого числа, не используя дополнительных библиотек, массивов, списков и т.д. Использовать только...

Реализовать рекурсию - C++
Доброго времени суток! Никак не пойму как это сделать, хотябы направьте меня, что бы самому додумать Пусть в алгебраической записи...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M9ICO
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 6
12.02.2013, 17:39     заменить рекурсию на цикл #2
Как на счет в место рекурсивного вызова присвоить значению num=*it-1 и вызов goto на созданную метку, где идет присвоение arr[num]=0 (начало функции).
colya
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 12
12.02.2013, 19:10  [ТС]     заменить рекурсию на цикл #3
но ведь:
arr [*it - 1] = 0;
выполнится только в "последнем" форе?

Добавлено через 1 час 16 минут
какие еще есть предложения?
Yandex
Объявления
12.02.2013, 19:10     заменить рекурсию на цикл
Ответ Создать тему
Опции темы

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