Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
2 / 2 / 2
Регистрация: 15.11.2009
Сообщений: 100

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

06.05.2011, 12:02. Показов 1716. Ответов 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.05.2011, 12:02
Ответы с готовыми решениями:

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

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

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

2
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
06.05.2011, 12:15
Выносишь переменную за функцию и все, передавай ее как параметр например.
Кстати рекурсия никак бесконечной быть не может....переполнится стек и твоя программа грохнется.
0
2 / 2 / 2
Регистрация: 15.11.2009
Сообщений: 100
06.05.2011, 12:24  [ТС]
Цитата Сообщение от 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.05.2011, 12:24
Помогаю со студенческими работами здесь

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

Бесконечный цикл
Доброго времени суток! Написал программу в среде Visual Studio 2010 Win32 project, но в ней есть кусок кода, когда происходит...

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru