Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Bhbyr
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 29
#1

программа с рекурсивной функцией - C++

29.11.2012, 23:28. Просмотров 547. Ответов 9
Метки нет (Все метки)

написать программу на языке с++
http://www.cyberforum.ru/cpp-beginners/thread1200637.html
решить задачу не используя операторы цикла
написать программу с рекурсивной функцией вычисляющей
0
Миниатюры
программа с рекурсивной функцией  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2012, 23:28
Я подобрал для вас темы с готовыми решениями и ответами на вопрос программа с рекурсивной функцией (C++):

Программа с рекурсивной функцией (расставляет между заданными шестью цифрами знаки операций)
Написать программу с рекурсивной функцией, которая расставляет между заданными...

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

Заполнение массива рекурсивной функцией
привет! рекурсия....это хуже всего!!! (( А рекурсивная функция, которая...

Создать структуру с рекурсивной функцией
Создать структуру в которой ввод и вывод информации будет осуществлятся с...

Написать программу с рекурсивной функцией
Написать программу с рекурсивной функцией, вычисляющей:...

9
go
Эксперт С++
3636 / 1368 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
29.11.2012, 23:50 #2
Формула корявая. Подправте.
0
Bhbyr
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 29
29.11.2012, 23:51  [ТС] #3
всё правильно
0
go
Эксперт С++
3636 / 1368 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
29.11.2012, 23:58 #4
Bhbyr, ну значит мне показалась
Вот на скорую руку, как пример
C
1
2
3
4
5
6
7
double fun(unsigned n)
{
    static int i;
 
    return i == n ? sqrt(n) : sqrt(++i + fun(n));
}
// Можно без static реализовать, но мне лень
1
Bhbyr
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 29
30.11.2012, 00:00  [ТС] #5
пожалуйста
go, помоги напиши полностью ((
0
go
Эксперт С++
3636 / 1368 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
30.11.2012, 00:05 #6
Цитата Сообщение от Bhbyr Посмотреть сообщение
пожалуйста go, помоги напиши полностью ((
Тогда задание полностью скажите. Откуда берется n. Из файла, передается при запуске в командной строке, или во время рантайма передается? А может в коде задается?
0
activnaya
256 / 46 / 4
Регистрация: 24.11.2012
Сообщений: 466
30.11.2012, 00:06 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cmath>
 
long double func(int n)
{
    if (n < 0)
        return -1.L;
    else
        return n ? sqrtl((long double) n + func(n - 1)) : 0.L;
}
 
int main()
{
    long double retval;
    if ( (retval = func(10)) != -1.L)
        std::cout << retval << '\n';
    else
        std::cerr << "error: value less of zero\n";
 
    std::cin.get();
    return 0;
}
2
Bhbyr
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 29
30.11.2012, 00:19  [ТС] #8
go, не знаю просто пример такой написан и всё ничего больше не сказанно
0
Bhbyr
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 29
30.11.2012, 18:57  [ТС] #9
правильно написала программу или нет
условие:
решить задачу не используя операторы цикла
написать программу с рекурсивной функцией вычисляющей



решение
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 <cmath>
 
long double func(int n)
{
    if (n < 0)
        return -1.L;
    else
        return n ? sqrtl((long double) n + func(n - 1)) : 0.L;
}
 
int main()
{
    long double retval;
    if ( (retval = func(10)) != -1.L)
        std::cout << retval << '\n';
    else
        std::cerr << "error: value less of zero\n";
 
    std::cin.get();
    re
turn 0;
}



условие задачи вот внизу
0
Миниатюры
программа с рекурсивной функцией  
activnaya
256 / 46 / 4
Регистрация: 24.11.2012
Сообщений: 466
30.11.2012, 20:55 #10
Bhbyr, мне кажется что я неверно написала решение. Моя функция вычисляет http://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{n + \sqrt{n - 1 +...+ \sqrt{3 + \sqrt{2 + \sqrt{1}} } }} а это не соответствует ТЗ. Сейчас посмотрим как переделать.

Добавлено через 12 минут
я поняла как ее переделать, сейчас перепишу.

Добавлено через 1 час 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
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <iostream>
#include <cmath>
 
#define MAX_DEPTH (100)
#define DEFAULT_DEPTH (10)
 
class shit
{
    private:
        const int depth;// максимальная глубина рекурсии
        int beg, end;
        enum std_err
        {
            BAD_BEG = 1,
            BAD_END = 2,
            BEG_LARG = 4,
            BAD_DIFF = 8
        };
        bool good;
    public:
        shit() : depth(MAX_DEPTH), beg(1), end(1) {};
        shit(int __n) : depth(MAX_DEPTH), beg(1), end(__n), good(true)
        {
            if (this->end < this->beg)
            {
                this->end = DEFAULT_DEPTH;
                std::cerr << "bad value. variable 'end' set as DEFAULT_DEPTH\n";
            }
        }
 
        shit(int __m, int __n) : depth(MAX_DEPTH), beg(__m), end(__n), good(true)
        {
            this->exeption();
        }
        ~shit() {};
 
        void exeption()
        {
            int exept = 0;
 
            if (this->beg < 0)
                exept |= this->BAD_BEG;
            if (this->end < 0)
                exept |= this->BAD_END;
            if (this->beg > this->end)
                exept |= this->BEG_LARG;
            if (this->end - this->beg > this->depth)
                exept |= this->BAD_DIFF;
            if (this->call_exept(exept))
                this->good = false;
            else
                this->good = true;
        }
 
        bool call_exept(int num)
        {
            bool ret = false;
 
            if (num & BAD_BEG) {
                std::cerr << "bad begin value\n";
                ret = true;
            }
            if (num & BAD_END) {
                std::cerr << "bad end value\n";
                ret = true;
            }
            if (num & BEG_LARG) {
                std::cerr << "begin value is lergest end value\n";
                ret = true;
            }
            if (num & BAD_DIFF) {
                std::cerr << "very large recursion depth\n";
                ret = true;
            }
            return ret;
        };
 
        void set()
        {
            this->beg = 1;
            this->end =10;
            this->good = true;
        };
 
        void set(int __n)
        {
            this->end = __n;
            this->exeption();
        };
 
        void set(int __m, int __n)
        {
            this->beg = __m;
            this->end = __n;
            this->exeption();
        }
 
        int get_beg() {return this->beg;}
        int get_end() {return this->end;}
 
        long double rec_foo(int __beg, int __end)
        {
            if (this->good)
            {
                return __beg < __end ?
                    sqrtl((long double) __beg + this->rec_foo(__beg + 1, __end)) :
                    sqrtl(__end);
            }
            else
            {
                std::cerr << "bad object\n";
                return -1.L;
            }
        };
};
 
int main()
{
    shit ob1, ob2(5), ob3(3, 55);
 
    std::cout << "I'm ob2, and my recursion are: ";
    std::cout << ob2.rec_foo(ob2.get_beg(), ob2.get_end()) << '\n';
    std::cout << "I'm ob3, and my recursion are: ";
    std::cout << ob3.rec_foo(ob3.get_beg(), ob3.get_end()) << '\n';
 
    ob1.set(2, 70);
 
    std::cout << "I'm ob1, and my recursion are: ";
    std::cout << ob1.rec_foo(ob1.get_beg(), ob1.get_end()) << '\n';
 
 
    return 0;
}
2
30.11.2012, 20:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2012, 20:55
Привет! Вот еще темы с решениями:

Нужно количество цифр с рекурсивной функцией
Не могу найти ошибку. Надо найти кол-во цифр введённого числа с помощью...

Разница между рекурсивной функцией и обычной
Как можно посчитать разницу между рекурсивной функцией и обычной? Там как то...

Написать программу с рекурсивной функцией вычисляющий выражение
Написать программу с рекурсивной функцией, вычисляющей:...

Разобраться с рекурсивной функцией обхода бинарного дерева
Люди, помогите разобраться с рекурсивной функцией обхода бинарного дерева....


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

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

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