Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

06.05.2011, 12:02. Просмотров 913. Ответов 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 с рекурсией инициализируется снова и снова в отличии от первого варианта (с бесконечным циклом) ,помогите пожалуйста как сделать что бы и рекурсия была и переменная не инициализировалась заного,я уже все перепробовал и с помощью деректив и методом флага
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2011, 12:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Бесконечный цикл -замена рекурсией (C++):

Почему цикл на при 1 уходит в бесконечный цикл? - C++
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <stdio.h> #include <string.h> int main() { int x=0, y=0,...

Замена цикла рекурсией - C++
Само задание: В заданной строке выделить отдельные слова, если в качестве разделителей используются разделители русского языка. ...

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

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

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

Бесконечный цикл - C++
#include <iostream> #include <climits> bool is_int(double); int main() { using namespace std; double num; cout << "Yo,...

2
solar_wind
760 / 751 / 42
Регистрация: 06.07.2009
Сообщений: 2,988
Завершенные тесты: 1
06.05.2011, 12:15 #2
Выносишь переменную за функцию и все, передавай ее как параметр например.
Кстати рекурсия никак бесконечной быть не может....переполнится стек и твоя программа грохнется.
0
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;
    }
//
}
только способ какой-то не нравится он мне)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2011, 12:24
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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