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

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

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

Пример рекурсивной функции (кроме факториала) - C++

18.03.2012, 18:41. Просмотров 430. Ответов 4
Метки нет (Все метки)

Сделать рекурсию, кроме факториала!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2012, 18:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Пример рекурсивной функции (кроме факториала) (C++):

Написать программу нахождения факториала числа в виде рекурсивной функции - C++
Люди добрые, помогите пожалуйста с заданиями: 1) Реализовать все задачи (1-3) в виде функций в одном проекте. Для этого реализовать...

Написать программу нахождения факториала числа в виде рекурсивной функции - C++
Ребят помогите с практикой а то вообще не справляюсь =( вычисление факториала Написать программу нахождения факториала числа в...

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

Написать функции рекурсивной и не рекурсивной реализации алгоритма Евклида нахождения наибольшего общего делителя (НОД) двух натуральных чисел - C++
Написать функции рекурсивной и не рекурсивной реализации алгоритма Евклида нахождения наибольшего общего делителя (НОД) двух натуральных...

Описать рекурсивные функции вычисляющие значения факториала и двойного факториала - C++
Написать блок схему и программу согласно заданию. Описать рекурсивные функции Fact(n) и Fact2(N) вещественного типа, вычисляющие значения...

Из рекурсивной функции в не рекурсивную - C++
Есть рекурсивная функция сортировки слиянием. Нужно переделать на функцию без рекурсий. void mergeSort(long* a, int begin, int end) ...

4
Rolion
14 / 14 / 3
Регистрация: 04.01.2011
Сообщений: 195
18.03.2012, 18:49 #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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
 
int n,m,br,t1,t2;
vector<int> brig;
pair<int,int> ver[200100];
vector<int> g[20100];
bool used[20100];
int timer, tin[20100], fup[20100];
 
bool fsort(int i,int j)
{
    return (i<j);
}
 
void Yeach(int a,int b)
{
    br++;
    //printf("I have %d %d now\n",a,b);
    for (int i=0; i<m; ++i)
    {
        if ((ver[i].first == b) && (ver[i].second == a)) brig.push_back(i+1); /*printf("I'm %d %d and on %d now\n",a,b,i+1);}*/
        if ((ver[i].first == a) && (ver[i].second == b)) brig.push_back(i+1); /*printf("I'm %d %d and on %d now\n",a,b,i+1);}*/
    }
}
//bridge
void dfs (int v, int p = -1)
{
    used[v] = true;
    tin[v] = fup[v] = timer++;
    for (size_t i=0; i<g[v].size(); ++i)
    {
        int to = g[v][i];
        if (to == p)  continue;
        if (used[to])
            fup[v] = min (fup[v], tin[to]);
        else
        {
            dfs (to, v);
            fup[v] = min (fup[v], fup[to]);
            if (fup[to] > tin[v])
                Yeach(v,to);
        }
    }
}
 
 
 
 
void find_bridges()
{
    timer = 0;
    for (int i=0; i<n; ++i)
        used[i] = false;
    for (int i=0; i<n; ++i)
        if (!used[i])
            dfs (i);
}
 
int main()
{
    freopen("bridges.in","r",stdin);
    freopen("bridges.out","w",stdout);
    br=0;
    scanf("%d %d",&n,&m);
    for (int i=0; i<m; ++i)
    {
        scanf("%d %d",&t1,&t2);
        ver[i]=make_pair(t1,t2);
        g[t1].push_back(t2);
        g[t2].push_back(t1);
    }
    find_bridges();
    sort (brig.begin(), brig.end(), fsort);
    printf("%d\n",br);
    for (int i=0; i<br; ++i) printf("%d ",brig[i]);
    return 0;
}
0
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
18.03.2012, 18:51 #3
банально - печать массива
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
#include <iostream>
 
void print_mass(const int *, int);
 
int main()
{
        int m[5] = { 1, 2, 3, 4, 5 };
 
        print_mass(m,(sizeof(m)/sizeof(int)-1));
 
        std::cout << std::endl;
 
        return 0;
}
 
void print_mass(const int *m, int step)
{
        if(!step)
                std::cout << *(m+step) << ' ';
        else
        {
                print_mass(m,step-1);
 
                std::cout << *(m+step) << ' ';
        }
}
0
Hemull
47 / 47 / 1
Регистрация: 12.03.2012
Сообщений: 108
18.03.2012, 18:51 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <stdlib.h>
using namespace std;
 
int count_digits(int, int);
int main()
{
   int res, n=0, cnt=0; 
   cout << "Vvedite n\n";  
   cin >> n;                            
   res=count_digits(n,cnt);
   cout << "cnt = " << res << endl;
   system ("pause");
}
 
int count_digits(int n, int cnt)
    {
        if(n == 0)
        return cnt;
        return count_digits(n/10, n%2==1 ? ++cnt : cnt);
    }
рекурсивный подсчет количества нечетных цифр в числе
0
sandye51
программист С++
685 / 587 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
18.03.2012, 18:56 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cstdlib>
 
unsigned int gcd(unsigned int a, unsigned int b)
{
    return !a || !b ? a ? a : b : a > b ? gcd(a % b, b) : gcd(b % a, a); 
}
 
int main(int argc, const char * argv[])
{
    int a, b;
    
    std::cout << "Введите 2 целых числа" << std::endl;
    std::cin >> a >> b;
    
    std::cout << "НОД(" << a << ", " << b << ") = " << gcd(a > 0 ? a : -a, b > 0 ? b : -b) << std::endl;  
    
    system("Pause");
    return EXIT_SUCCESS;
}
вычисление НОД
0
18.03.2012, 18:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2012, 18:56
Привет! Вот еще темы с ответами:

Использование рекурсивной функции - C++
Вычислить сумму 12 членов рекуррентной последовательности(вложения) Для решения задачи описать рекурсивную функцию, а также составить...

Схема рекурсивной функции - C++
Hi. Есть рекурсивная функция, для вычисления значения числа в n-ной степени. int power(int base, int exponent) { if(exponent...

Создание потоков в рекурсивной функции - C++
Почему при создании потоков в рекурсивных функциях скорость падает ? Добавлено через 1 минуту простейший пример: //...

Объяснить поведение рекурсивной функции - C++
Есть код: #include &lt;iostream&gt; using namespace std; void print(int number) { cout &lt;&lt; number; if (number &lt; 9) ...


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

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

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