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

Используя рекурсивную функцию, выдать первые n элементов последовательности - C++

Восстановить пароль Регистрация
 
Serdox
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 32
14.01.2013, 23:35     Используя рекурсивную функцию, выдать первые n элементов последовательности #1
Помогите пожалуйста! Рекурсия моя слабость! Вот задание:

Используя рекурсивную функцию, выдать первые n элементов последовательности Xn= 5*X(n-1) - 20, X0= 2, которые больше заданного числа m.

Что то даже начать не знаю откуда! Очень нужна ваша помощь!
Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2013, 23:35     Используя рекурсивную функцию, выдать первые n элементов последовательности
Посмотрите здесь:

Описать рекурсивную функцию целого типа, находящую число сочетаний из n элементов по m, используя формулу C++
Найти минимальный элемент массива, используя вспомогательную рекурсивную функцию C++
Получить первые n-минимальных элементов массива,используя указатели C++
C++ Найти минимальный элемент вектора, используя вспомогательную рекурсивную функцию
Используя рекурсивную функцию, выдать первые n элементов последовательности, которые больше заданного числа m C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
14.01.2013, 23:39     Используя рекурсивную функцию, выдать первые n элементов последовательности #2
Начать надо с функции рекурсии , но тут задание с подвохом рекурсия обычно возврашает одно значение, а вам их придется кудато записать и ничего не возврашать
Serdox
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 32
14.01.2013, 23:45  [ТС]     Используя рекурсивную функцию, выдать первые n элементов последовательности #3
А как эту функцию рекурсии написать? Я час сидел думал ничего что то не приходит!
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
15.01.2013, 00:47     Используя рекурсивную функцию, выдать первые n элементов последовательности #4
ну как и обычную для начала заголовок

Добавлено через 39 минут
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
#include <iostream>
 
using namespace std;
 
int element(double x,int n){
    return 5*x*(n-1) - 20;
}
 
void firstNNumbers(int N,int m,int x,int n){  // n счетчик рекурсии
    if (N) {   // пока N > 0
        if (element(x,n) > m) {
            cout <<  element(x,n) << " ";
            return firstNNumbers(--N,m,x,++n); //  если число вывели то количество уменьшаем
        }  else {
            return firstNNumbers(N,m,x,++n);
        }
    } return;
}
 
int main()
{
        int N; // N количество которое необходимо вывести
        int x = 2;
        int m;
        system("chcp 1251");
        cout << "Введите N и m" << endl;
        cin >> N >> m;
        firstNNumbers(N,m,x,-10);  // вместо -10 можно запрашивать начало
        system("pause");
        return 0;
 
}
Serdox
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 32
15.01.2013, 01:15  [ТС]     Используя рекурсивную функцию, выдать первые n элементов последовательности #5
Большое Спасибо! Вы меня спасли!

Добавлено через 19 минут
Только там X(n-1)-это предыдущий элемент, а не умножение.
Как это можно поправить. Буду очень признателен!
FreeMinder
 Аватар для FreeMinder
36 / 36 / 2
Регистрация: 29.08.2012
Сообщений: 59
15.01.2013, 10:50     Используя рекурсивную функцию, выдать первые n элементов последовательности #6
Если понимать условие как: "посчитать первые n чисел последовательности, а вывести только те, что больше 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
#include<iostream>
using namespace std;
 
void Sequence(double x, double m, int n)
{
    static int count = 0;   
    if(count++ > n) 
        return;
    if(x > m)
        cout<<x<<endl;
    return Sequence( 5*x - 20, m, n);
}
 
int main(int argc, char *argv[])
{  
    int    n = 0;
    double m = 0;
 
    cout << "Enter n: ";
    cin >> n;
    cout << "Enter m: ";
    cin >> m;
 
    Sequence(2,m,n);
 
    return 0;
}
А если нужно считать пока не выведем n элементов, то надо или по модулю сравнивать или хз, эта последовательность уходит в минус бесконечность и при положительных m считать будем до бесконечности
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
15.01.2013, 11:51     Используя рекурсивную функцию, выдать первые n элементов последовательности #7
надо знать пределы n чтобы выйти из рекурсии, если считать n как индекс , как счетное натуральное число, то его предел будет 1 таким образом получим такую последовательность http://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{cases}<br />
 \text n <= 0, yn= 1 \\ <br />
 \text n > 0  ,  yn= 5*y(n-1)-20  <br />
\end{cases} иначе как указал ,FreeMinder, она уходит в минус бесконечность и ни что ее не остановит,и даже при таком варианте она уходит в минус бесконечность поэтому целесообразно сравнивать по модулю


Добавлено через 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
#include <iostream>
using namespace std;
 
int element(int n){
    if ( n > 0 ) {
        return 5*element(n-1) - 20;
    } else {
        return 2;
    }
}
 
void firstNNumbers(int N,int m,int n){  // n счетчик рекурсии
    if (N) {   // пока N > 0
        if (abs(element(n)) > abs(m)) {// сравнение по модулю
            cout <<  element(n) << " ";
            return firstNNumbers(--N,m,++n); //  если число вывели то количество уменьшаем
        }  else {
            return firstNNumbers(N,m,++n);
        }
    } return;
}
 
int main()
{
        int N; // N количество которое необходимо вывести
        int m;
        system("chcp 1251");
        cout << "Введите N и m" << endl;
        cin >> N >> m;
        firstNNumbers(N,m,1);  // вместо 1 можно запрашивать начало
        system("pause");
        return 0;
}}
вот если n cчетное то мы считаем Х
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2013, 14:32     Используя рекурсивную функцию, выдать первые n элементов последовательности
Еще ссылки по теме:

C++ Вычислить z = ab + cb, используя рекурсивную функцию
C++ Ввести число. Используя рекурсивную функцию, получить все возможные перестановки цифр этого числа
C++ Разработать рекурсивную функцию нахождения минимального элемента данной последовательности а1, а2, …

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

Или воспользуйтесь поиском по форуму:
Serdox
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 32
15.01.2013, 14:32  [ТС]     Используя рекурсивную функцию, выдать первые n элементов последовательности #8
Спасибо всем большое!
Yandex
Объявления
15.01.2013, 14:32     Используя рекурсивную функцию, выдать первые n элементов последовательности
Ответ Создать тему
Опции темы

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