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

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

Войти
Регистрация
Восстановить пароль
 
domovenok
0 / 0 / 0
Регистрация: 13.10.2012
Сообщений: 87
#1

рекурсия - C++

06.12.2013, 18:08. Просмотров 401. Ответов 12
Метки нет (Все метки)

Всем доброго времени суток. Есть рекурсивная функция выводящая числа от 15 до 10 по убыванию, как сделать чтоб выводило эти же числа но по возрастанию

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <iostream>
using namespace std;
long int rec(int q, int n)
{   
if(q<=n)    
{   
    cout << n << endl; 
    return rec(q, n-1);
}
return (q);
}
int main ()
{
int f; 
f=rec(10, 15);
system("pause");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2013, 18:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос рекурсия (C++):

Рекурсия - C++
Здравствуйте, писали на лабораторной программу с использованием рекурсии, о бъясните почему в ответе двойки выдает?? и что рекурсивная...

Рекурсия - C++
Помогите пожалуйста составить программу, с помощью рекурсии: Определить значение отношения максимального и минимального из...

рекурсия на с - C++
разработать рекурсивную функцию для вычитания двух подлинных двоичных чисел, заданных в виде символьных строк. разрядность цифр может быть...

Рекурсия - C++
Всем доброго времени суток! Прошу Вашей помощи! Задание такого: Вычислить, используя рекурсию, выражение: //и вот собственно...

Рекурсия - C++
Привет, помогите пожалуйста надо вычислить рекурсивную функцию : (x+a(x+(a-1)(x+(a-2)(x+...2(x+1)^2)^2)^2)^2)^2. Помогите пожалуйста ,...

Рекурсия - C++
Задан массив целых чисел: а0, а1 ..., аn-1. Известно, что один из элементов массива принимает нулевое значение. Найти номер данного...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
МаксимТ
47 / 47 / 4
Регистрация: 17.08.2012
Сообщений: 225
06.12.2013, 18:14 #2
C++
1
2
 cout << q << endl; 
    return rec(q+1, n);
Aloir
217 / 217 / 13
Регистрация: 17.12.2010
Сообщений: 689
06.12.2013, 18:15 #3
C++
1
2
3
4
5
6
7
8
9
long int rec(int q, int n)
{   
    if(q<=n)    
    {   
        cout << q << endl; 
        return rec(q+1, n);
    }
    return (q);
}
domovenok
0 / 0 / 0
Регистрация: 13.10.2012
Сообщений: 87
06.12.2013, 18:39  [ТС] #4
Спасибо

Добавлено через 11 минут
Получается теперь тут присутствует рекурсия как на подъеме так и на спуске?
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
06.12.2013, 18:44 #5

Не по теме:

domovenok, эй, это я домовёнок!



Добавлено через 2 минуты
Цитата Сообщение от domovenok Посмотреть сообщение
Получается теперь тут присутствует рекурсия как на подъеме так и на спуске?
нет, это можно назвать двумя разными функциями
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
long int rec_down(int q, int n)
{   
    if(q<=n)    
    {   
        cout << n << endl; 
        return rec_down(q, n-1);
    }
    return (q);
}
long int rec_up(int q, int n)
{   
    if(q<=n)    
    {   
        cout << q << endl; 
        return rec_up(q+1, n);
    }
    return (q);
}
domovenok
0 / 0 / 0
Регистрация: 13.10.2012
Сообщений: 87
06.12.2013, 18:49  [ТС] #6
А как тогда переписать условия рекурсии чтоб она бала как на подъеме, так и на спуске?
К примеру из этой
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
long int rec(int q, int n)
{   
if(q<=n)    
{   
    cout << n << endl; 
    return rec(q, n-1);
}
return (q);
}
 
 
int main ()
{
int f; 
 
f=rec(10, 15);
system("pause");
return 0;
}
МаксимТ
47 / 47 / 4
Регистрация: 17.08.2012
Сообщений: 225
06.12.2013, 19:14 #7
в функции меняются всего 2 строчки.
добавить просто флаг, и сравнивать его, и в зависимости от флага делать либо то либо то
domovenok
0 / 0 / 0
Регистрация: 13.10.2012
Сообщений: 87
06.12.2013, 19:24  [ТС] #8
Можно более подробней ...
Нужно чтоб рекурсивная функция была только одна, к примеру эта
C++
1
2
3
4
5
6
7
8
9
10
long int rec(int q, int n)
{   
if(q<=n)    
{   
    
    cout << q << endl; 
    return rec(q+1, n);
}
return (q);
}
МаксимТ
47 / 47 / 4
Регистрация: 17.08.2012
Сообщений: 225
06.12.2013, 19:34 #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
long int rec(int q, int n,bool flag)
{   
if(q<=n)    
{   
    if (flag)
{
    cout << q << endl; 
    return rec(q+1, n,flag);
}else
{
    cout << n << endl; 
    return rec(q, n-1,flag);
 
}
}
return (q);
}
domovenok
0 / 0 / 0
Регистрация: 13.10.2012
Сообщений: 87
06.12.2013, 19:39  [ТС] #10
А сюда что добавить? Но это как я понял не рекурсия на подъеме и спуске, а просто рекурсия с разными условиями?

C++
1
2
3
4
5
6
7
8
int main ()
{
int f; 
 
f=rec(10, 15, );
system("pause");
return 0;
}
МаксимТ
47 / 47 / 4
Регистрация: 17.08.2012
Сообщений: 225
06.12.2013, 19:49 #11
либо true либо false.
функция рекурсивна, и в зависимости от флага она либо поднимается либо спускается(это самая простая реализация)
domovenok
0 / 0 / 0
Регистрация: 13.10.2012
Сообщений: 87
06.12.2013, 20:05  [ТС] #12
А если делать согласно этому примеру, как будет все выглядеть ?
Taatshi
06.12.2013, 20:51     рекурсия
  #13
 Комментарий модератора 
domovenok, размещать текстовую информацию в виде картинок запрещено правилами форума. Перепечатайте ручками пожалуйста.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2013, 20:51
Привет! Вот еще темы с ответами:

рекурсия - C++
Сделать рекурсию, кроме факториала!

Рекурсия - C++
Вопрос не по коду. Вот есть у меня рекурсивная функция, глубина рекурсии достигает 10 в среднем. Эта функция вызывается огромное (порядка...

Рекурсия - C++
Есть задача, написал решение но ответ неправильный. Задача: Решение: #include &lt;iostream&gt; using namespace std; int a, n, m, t,...

рекурсия - C++
Доброго времени суток. Уважаемые ГУРУ, есть одна проблема. Ниже представлен код, в котором параметр b должен быть всегда...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.12.2013, 20:51
Ответ Создать тему
Опции темы

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