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

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

Войти
Регистрация
Восстановить пароль
 
zinador
2 / 2 / 0
Регистрация: 15.11.2009
Сообщений: 100
#1

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

06.05.2011, 12:02. Просмотров 857. Ответов 2
Метки нет (Все метки)

Привет всем.

имеется код функции
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++
Когда пытаюсь считать строки из файла с помощью цикла, он почему то начинает повторятся бесконечно. Вот код: int main(int argc, char*...

Бесконечный цикл - C++
Задача: Ввести количество камней, ввести вес каждого камня, сложить камни в 2 кучки так чтобы разница между общими массами кучек были...

Бесконечный цикл - C++
Ребят, что-то цикл выполняется постоянно. Покажите ошибку мне/ #include <iostream> using namespace std; int main() { ...

Бесконечный цикл for - C++
Запишите цикл, который суммирует первые 100 натуральных чисел, которые делятся на 7 : используя for: · пустые секции ( ; ; ) ·...

Бесконечный цикл - C++
Почему компилятор выдает всякую ерунду при попытке воспроизвести этот код? Что его зацикливает? #include "stdafx.h" #include...

Бесконечный цикл - C++
Здравствуйте. Программа должна принимать некоторые значения, обрабатывать их и выдавать в виде статистики (нарисовать звездочками). ...

Бесконечный цикл - C++
Задача: Дед Мазай спасает зайцев. На N островках находится некоторое количество зайцев разной массы. Грузоподъемность лодки Мазая...

Бесконечный цикл - C++
if (!(cin >> Mas >> Rost)) { cout << "Ошибка\n"; continue; } В общем при вводе букв начинается бесконечный цикл, а надо...

Бесконечный цикл - C++
Как ввести программу в бесконечный цикл на C++ ? Смотрел видео где делали бесконечный цикл (НО!) это было на Small Basic'е, а мне нужно...

Бесконечный цикл while - C++
Здравствуйте необходимо написать бесконечный цикл while , который при запуске программы постоянно выводил на экран char переменную "y" и...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
solar_wind
756 / 747 / 42
Регистрация: 06.07.2009
Сообщений: 2,969
Завершенные тесты: 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     Бесконечный цикл -замена рекурсией
Ответ Создать тему
Опции темы

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