Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/14: Рейтинг темы: голосов - 14, средняя оценка - 4.57
2 / 2 / 0
Регистрация: 15.01.2012
Сообщений: 181
1

Задача на рекурсию

13.08.2012, 15:10. Просмотров 2692. Ответов 4
Метки нет (Все метки)

Помогите решить след. задачу:
Дана последовательность натуральных чисел (одно число в строке), завершающаяся числом 0. Выведите все нечетные числа из этой последовательности, сохраняя их порядок.
В этой задаче нельзя использовать глобальные переменные и передавать какие-либо параметры в рекурсивную функцию. Функция получает данные, считывая их с клавиатуры. Функция не возвращает значение, а сразу же выводит результат на экран. Основная программа должна состоять только из вызова этой функции.
Ввод
3
1
2
0
Вывод
3
1
Вот мой вариант, но здесь не сохраняется порядок:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void Func()
{   int x;
    cin>>x;
    if(0==x)
    {   cout<<"Result:"<<endl;
        return;
    }
    else
    {   Func();
        if(x%2!=0)
            cout<<x<<endl;
    }
}
Как же всё-таки решить задачу целиком? Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.08.2012, 15:10
Ответы с готовыми решениями:

Задача на рекурсию
Вот код проги которую я написал: #include &lt;iostream&gt; using namespace std; int factr(double...

Задача на рекурсию
Всем доброго времени суток. Прошу подсказать мне условие задачи на рекурсию(нам дали задание самим...

задача на рекурсию в си++
Даны числа a и b. Определите, сколько существует последовательностей из a нулей и b единиц, в...

Задача на рекурсию
Дано натуральное число n. Выяснить, имеется ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые...

4
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
13.08.2012, 18:20 2
PG94, реши задачу через циклы. Потом перепили в рекурсию
0
Модератор
8142 / 6016 / 801
Регистрация: 14.02.2011
Сообщений: 20,811
13.08.2012, 18:24 3
порядок операторов перепиши
C++
1
2
3
4
5
6
else
    {  
        if(x%2!=0)
            cout<<x<<endl;
    Func();
    }
1
2 / 2 / 0
Регистрация: 15.01.2012
Сообщений: 181
13.08.2012, 21:27  [ТС] 4
Цитата Сообщение от ValeryS Посмотреть сообщение
порядок операторов перепиши
C++
1
2
3
4
5
6
else
    {  
        if(x%2!=0)
            cout<<x<<endl;
    Func();
    }
Спасибо за подсказку, но я искал другой приём, т.е. можно ли с помощью такой ф-ии с исп. рекурсии сначала ввести все данные, а только затем получить весь результат; задержать нужные зн-ия в память до конца ввода?
0
Модератор
8142 / 6016 / 801
Регистрация: 14.02.2011
Сообщений: 20,811
13.08.2012, 21:38 5
Цитата Сообщение от PG94 Посмотреть сообщение
но я искал другой приём, т.е. можно ли с помощью такой ф-ии с исп. рекурсии сначала ввести все данные, а только затем получить весь результат;
нет нельзя, потому что тебе нельзя ни глобальными переменными ни аргументами
т.е каждая следующая функция не будет знать что было в предыдущей
посему надо написать а потом вызвать
если наоборот как ты написал то и получится
сначала функция1
вводишь данные(допустим 1)
потом функция2
опять вводишь данные(3)
потом функция3
вводишь 0
выход из функции3
печать 3(это запомнила 2 функция)
выход из функции2
печать 1(это запомнила 1 функция)
выход
вот тебе и обратный отсчет
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.08.2012, 21:38

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Задача на рекурсию
Задание: написать функцию умножения двух чисел, используя только операции сложения и рекурсии. Не...

Задача на рекурсию
С помощью рекурсии вычислить произведение ненулевых элементов динамического массива. Кто-то знает?...

Задача на рекурсию
Задание : Напишите функцию возведения в степень, которая работала бы как для положительных, так и...

Задача на рекурсию
Дано число. Вывести все цифры этого числа, не используя дополнительных библиотек, массивов, списков...


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

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

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