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

рекурсия

05.05.2010, 22:38. Просмотров 861. Ответов 13
Метки нет (Все метки)

Помогите пожалуйста сделать рекурсию
Даны n и m, найти X[n] и Y[m], при
X[1]1=Y[1]=1
X[i]=X[i-1]+Y[i-1]/i^2
Y[i]=Y[i-1]=X[i-1]/i^2
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2010, 22:38
Ответы с готовыми решениями:

Рекурсия
Помогите написать функцию которая будет считать эту рекуррентную формулу с...

Рекурсия
Как переделать программу в рекурсию? char S='S', T='T', M={NULL}; int...

Рекурсия
Разработать рекурсивную функцию не возврашающую значений: Дано натуральное...

РЕкурсия
Мне нужно 5 задач по рекурсии с решениями,)))есмли не сложно-помогите, может...

Рекурсия
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <iostream>...

13
Mr.X
Эксперт С++
3178 / 1705 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
06.05.2010, 21:15 #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
//MS VS
#include "stdafx.h"
#include <iostream>
 
double Y(unsigned i);
 
double X(unsigned i)
{    
    return (i == 1) ? 1 : X(i - 1) + Y(i - 1) / i * i;
}
 
double Y(unsigned i)
{    
    return (i == 1) ? 1 : Y(i - 1) - X(i - 1) / i * i;    
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    unsigned n;
    unsigned m;
    for(;;)
    {
        std::cout 
            << std::endl
            << std::endl
            << std::endl
            << "Input int n > 0: ";        
        std::cin >> n;
        if(n < 1) continue;        
 
        std::cout << "Input int m > 0: ";
        std::cin >> m;
        if(m < 1) continue;        
        std::cout ;
 
        std::cout << std::endl
                  << "X["
                  << n
                  << "] = "                  
                  << X(n);
 
        std::cout << std::endl
                  << "Y["
                  << m
                  << "] = "
                  << Y(m);
    }//for
    return 0;
}
1
lenoch
0 / 0 / 0
Регистрация: 05.05.2010
Сообщений: 8
06.05.2010, 22:11  [ТС] #3
спасибо большое, для зачета не хватало
0
lenoch
0 / 0 / 0
Регистрация: 05.05.2010
Сообщений: 8
08.05.2010, 13:48  [ТС] #4
как оказалось высчитывает не правильно
0
Mr.X
Эксперт С++
3178 / 1705 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
08.05.2010, 18:40 #5
А что неправильно?
0
lenoch
0 / 0 / 0
Регистрация: 05.05.2010
Сообщений: 8
08.05.2010, 19:30  [ТС] #6
сам результат вычисления, тут вроде рекурсия типа struct со статическими переменными
0
lenoch
0 / 0 / 0
Регистрация: 05.05.2010
Сообщений: 8
24.06.2010, 00:10  [ТС] #7
подниму тему, попробовала сделать через структуру но всеравно не получается

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
[CPP]struct vozvrat
{
    int n;
    double x,y;
};
 
struct vozvrat Decision(double n)
{
    static struct vozvrat tmp;
    static double xp, yp;
    static int nom=0;
    tmp.n=nom;
    if (tmp.n==0) tmp.x=1;
    xp=tmp.x;
    tmp.x=(xp+yp/pow(n,2));
    if (tmp.n==0) tmp.y=1;
    yp=tmp.y;
    tmp.y=(yp+xp/pow(n,2));
    tmp.n=nom;
    if (nom <= n) 
        return tmp;
    else 
    {
        nom++;
        return Decision(n);
    }
}
[/CPP]
0
easybudda
Модератор
Эксперт CЭксперт С++
10054 / 5974 / 1493
Регистрация: 25.07.2009
Сообщений: 11,320
24.06.2010, 03:05 #8

Не по теме:

Цитата Сообщение от lenoch Посмотреть сообщение
рекурсия типа struct со статическими переменными
это чё такое?!! =-O



Добавлено через 3 минуты
Цитата Сообщение от Mr.X Посмотреть сообщение
return (i == 1) ? 1 : X(i - 1) + Y(i - 1) / i * i
Конечно не правильно считает. Скобки вокруг i * i поставьте - и будет Вам счастье!
1
Mr.X
Эксперт С++
3178 / 1705 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
24.06.2010, 03:41 #9
Цитата Сообщение от easybudda Посмотреть сообщение

Не по теме:


это чё такое?!! =-O



Добавлено через 3 минуты

Конечно не правильно считает. Скобки вокруг i * i поставьте - и будет Вам счастье!
Признаю свою ошибку. Теперь действительно правильно считает.
0
ISergey
Maniac
Эксперт С++
1408 / 919 / 148
Регистрация: 02.01.2009
Сообщений: 2,749
Записей в блоге: 1
24.06.2010, 04:14 #10
Цитата Сообщение от easybudda Посмотреть сообщение

Не по теме:

рекурсия типа struct со статическими переменными
это чё такое?!

!
Первое что в голову приходит - так это метапрограммирование..

Не по теме:

( хотя может я и не прав... ) но все-же..



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
template <int N>
class Factorial {
public:
    enum { Result = N * Factorial<N - 1>::Result };
};
 
template <>
class Factorial<0> {
public:
    enum { Result = 1 };
};
 
int main() {
 
    std::cout << Factorial<5>::Result << std::endl;
    return 0;
}
http://codepad.org/6OUn51fD
0
Хохол
Эксперт С++
475 / 443 / 34
Регистрация: 20.11.2009
Сообщений: 1,292
24.06.2010, 04:17 #11
ISergey, вау, прикольно.
0
lenoch
0 / 0 / 0
Регистрация: 05.05.2010
Сообщений: 8
24.06.2010, 12:45  [ТС] #12
действительно со скобками все работает, но преподователь у нас такой, что любит все усложнить и требует через структуру
0
Mr.X
Эксперт С++
3178 / 1705 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
24.06.2010, 16:46 #13
Цитата Сообщение от lenoch Посмотреть сообщение
действительно со скобками все работает, но преподователь у нас такой, что любит все усложнить и требует через структуру
Ну тогда пускай расскажет, что это за структура такая.
0
lenoch
0 / 0 / 0
Регистрация: 05.05.2010
Сообщений: 8
30.06.2010, 22:31  [ТС] #14
преподователь говорит нельзя прямой рекурсией и нужно в 1 функцию сделать, решила сделать на основе работы одногруппника
"В последовательности x(1), x(2)..., образованой по закону x(0)=а, x(i)=(k-1)/k*x(i-1)+a/x(i-1)^k i=1,2,..., найти первый член x(n), для которого выполнено неравенство |x(n)^k-k*a|<10^(-m)"

вот его функция

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
struct vozvrat
{
    int n;
    double x;
};
 
struct vozvrat Decision(double a, double k, double m)
{
    static struct vozvrat tmp;
    static double xp;
    static int nom=0;
    tmp.n=nom;
    if (tmp.n==0) tmp.x=a;
    xp=tmp.x;
    tmp.x=((k-1)/k)*xp+(a/pow(xp,k-1));
    tmp.n=nom;
    if (fabs(pow(tmp.x,k)-k*a)<pow(10,-m)) 
        return tmp;
    else 
    {
        nom++;
        return Decision(a,k,m);
    }
}
вот то что я попыталась сделать

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
struct vozvrat
{
    int n;
    double x,y;
};
 
struct vozvrat Decision(int n)
{
    static struct vozvrat tmp;
    static double xp, yp; //я взяла xp как x(i-1)
    static int nom=0;// это счетчик
    tmp.n=nom;
    if (tmp.n==0) tmp.x=1;
    xp=tmp.x;
    tmp.x=xp+yp/(n*n);
    if (tmp.n==0) tmp.y=1;
    yp=tmp.y;
    tmp.y=yp+xp/(n*n);
    tmp.n=nom;
    if (nom = n) 
        return tmp;
    else 
    {
        nom++;
        return Decision(n);
    }
}
0
30.06.2010, 22:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2010, 22:31

Рекурсия
на картинке файлик из википедии в которой говорится что рекусия имеет вид...

рекурсия B c++
пожалуйста помогите,почему не работает? дело в рекурсии,функция func1...

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


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

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

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