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

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

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

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

06.12.2013, 18:08. Просмотров 379. Ответов 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++
рекурсия C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
МаксимТ
 Аватар для МаксимТ
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
 Аватар для Aloir
216 / 216 / 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
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 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
А если делать согласно этому примеру, как будет все выглядеть ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2013, 20:51     рекурсия
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Taatshi
06.12.2013, 20:51     рекурсия
  #13
 Комментарий модератора 
domovenok, размещать текстовую информацию в виде картинок запрещено правилами форума. Перепечатайте ручками пожалуйста.
Yandex
Объявления
06.12.2013, 20:51     рекурсия
Ответ Создать тему
Опции темы

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