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

Бесконечный цикл -замена рекурсией - C++

Восстановить пароль Регистрация
 
zinador
2 / 2 / 0
Регистрация: 15.11.2009
Сообщений: 100
06.05.2011, 12:02     Бесконечный цикл -замена рекурсией #1
Привет всем.

имеется код функции
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
float expr()
{
float resplus=factor();
for(;;)
{
char c=cin.get();
    switch(c)
    {
    case '+':
        resplus+=factor();
        break;
    case '-':
        resplus-=factor();
        break;
    default:
    cin.putback(c);
    return resplus;
    }
}
}
,а теперь вопрос как это заменить рекурсией,я сделал так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
float expr()
{
float resplus=factor();
char c=cin.get();
    switch(c)
    {
    case '+':
        resplus+=factor();
        return expr();
    case '-':
        resplus-=factor();
        return expr();
    default:
    cin.putback(c);
    return resplus;
    }
}
,а теперь вопрос на мой же ответ ,переменная resplus с рекурсией инициализируется снова и снова в отличии от первого варианта (с бесконечным циклом) ,помогите пожалуйста как сделать что бы и рекурсия была и переменная не инициализировалась заного,я уже все перепробовал и с помощью деректив и методом флага
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2011, 12:02     Бесконечный цикл -замена рекурсией
Посмотрите здесь:

C++ Бесконечный цикл
C++ Бесконечный цикл
Бесконечный цикл C++
Бесконечный цикл C++
Бесконечный цикл while C++
Замена цикла рекурсией C++
C++ Бесконечный цикл for
C++ Бесконечный цикл

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
06.05.2011, 12:15     Бесконечный цикл -замена рекурсией #2
Выносишь переменную за функцию и все, передавай ее как параметр например.
Кстати рекурсия никак бесконечной быть не может....переполнится стек и твоя программа грохнется.
zinador
2 / 2 / 0
Регистрация: 15.11.2009
Сообщений: 100
06.05.2011, 12:24  [ТС]     Бесконечный цикл -замена рекурсией #3
Цитата Сообщение от vitaly1981 Посмотреть сообщение
Выносишь переменную за функцию и все, передавай ее как параметр например.
Кстати рекурсия никак бесконечной быть не может....переполнится стек и твоя программа грохнется.
я знаю но я как бы делаю виртуальный бесконечный цикл стек не успеет переполнится как будет выход из функции,а переменную просто так за функцию вынести не получится
потому что мне нужно чтобы в одном случае она инициализировалась,а в другом нет уже месяц голову ломаю

Добавлено через 2 минуты
УРААА решил проблему
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
int b=0;
float temp=0;
float resplus;
float expr()
{
if(b==1)
{
resplus=temp;
}
else
{
resplus=factor();
b=1;
}
//
char c=cin.get();
    switch(c)
    {
    case '+':
        resplus+=factor();
        temp=resplus;
        
        return expr();
    case '-':
        resplus-=factor();
        return expr();
    default:
    cin.putback(c);
    b=0;
    return resplus;
    }
//
}
только способ какой-то не нравится он мне)
Yandex
Объявления
06.05.2011, 12:24     Бесконечный цикл -замена рекурсией
Ответ Создать тему
Опции темы

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