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

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

Восстановить пароль Регистрация
 
Bhbyr
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 29
29.11.2012, 23:28     программа с рекурсивной функцией #1
написать программу на языке с++
решить задачу не используя операторы цикла
написать программу с рекурсивной функцией вычисляющей
Миниатюры
программа с рекурсивной функцией  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.11.2012, 23:50     программа с рекурсивной функцией #2
Формула корявая. Подправте.
Bhbyr
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 29
29.11.2012, 23:51  [ТС]     программа с рекурсивной функцией #3
всё правильно
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
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 реализовать, но мне лень
Bhbyr
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 29
30.11.2012, 00:00  [ТС]     программа с рекурсивной функцией #5
пожалуйста
go, помоги напиши полностью ((
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
30.11.2012, 00:05     программа с рекурсивной функцией #6
Цитата Сообщение от Bhbyr Посмотреть сообщение
пожалуйста go, помоги напиши полностью ((
Тогда задание полностью скажите. Откуда берется n. Из файла, передается при запуске в командной строке, или во время рантайма передается? А может в коде задается?
activnaya
 Аватар для activnaya
255 / 45 / 2
Регистрация: 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;
}
Bhbyr
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 29
30.11.2012, 00:19  [ТС]     программа с рекурсивной функцией #8
go, не знаю просто пример такой написан и всё ничего больше не сказанно
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;
}



условие задачи вот внизу
Миниатюры
программа с рекурсивной функцией  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2012, 20:55     программа с рекурсивной функцией
Еще ссылки по теме:

Разница между рекурсивной функцией и обычной C++
Программа с рекурсивной функцией C++
C++ Разобраться с рекурсивной функцией обхода бинарного дерева

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

Или воспользуйтесь поиском по форуму:
activnaya
 Аватар для activnaya
255 / 45 / 2
Регистрация: 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;
}
Yandex
Объявления
30.11.2012, 20:55     программа с рекурсивной функцией
Ответ Создать тему
Опции темы

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