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

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

Восстановить пароль Регистрация
 
colya
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 12
12.02.2013, 15:11     заменить рекурсию на цикл #1
Здравствуйте. У меня есть рекурсивная ф-ия, но глубина вызова довольно большая, в итоге стек переполняется и прога падает. Подскажите, как переписать ее в виде цикла и как вообще в дальнейшем действовать, если понадобиться переписывать ф-ию в цикл. У просто вообще никаких идей нет....

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

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++ заменить на цикл for
std::map (заменить цикл на грамотный алгоритм) C++
Рекурсию в цикл C++
C++ Цикл: цикл for вообще никак не воспринимается транслятором
C++ Заменить некоторые члены последовательности используя цикл for
C++ Почему цикл на при 1 уходит в бесконечный цикл?
C++ Как заменить цикл while на рекурсию?
Задание на цикл с параметром и цикл с постусловием 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     заменить рекурсию на цикл
Ответ Создать тему
Опции темы

Текущее время: 00:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru