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

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

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

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

14.01.2013, 23:35. Просмотров 499. Ответов 7
Метки нет (Все метки)

Помогите пожалуйста! Рекурсия моя слабость! Вот задание:

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

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

Используя рекурсивную функцию, выдать первые n элементов последовательности, которые больше заданного числа m - C++
Помогите срочно!!!Нужно написать программу рекурсией!!Но я рекурсию вообще не понимаю. Помогите пожалуйста!! Используя рекурсивную...

Используя рекурсивную функцию, найти сумму первых n элементов последовательности - C++
Используя рекурсивную функцию, найти сумму первых n элементов последовательности xn = 3 * xn-1, x0 = 1. Помогите пожалуйста. Нужно...

Описать рекурсивную функцию целого типа, находящую число сочетаний из n элементов по m, используя формулу - C++
1.Описать рекурсивную функцию C(m,n) целого типа, находящую число сочетаний из n элементов по m, используя формулу: C(0,n) = C(n,n) = 1,...

Используя рекурсивную функцию вычислить (a*a)! - C++
Создать программу, которая содержит функцию рекурсивной. Все первоначальные данные вводятся с клавиатуры. Вывести результаты работы...

Вычислить z = ab + cb, используя рекурсивную функцию - C++
Ввести с клавиатуры любое целое число "b" и действительные числа "a" и "с". вычислить z = ab + cb, используя рекурсивную функцию: x^n =...

Вычислить сумму, используя рекурсивную функцию - C++
П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.

7
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
14.01.2013, 23:39 #2
Начать надо с функции рекурсии , но тут задание с подвохом рекурсия обычно возврашает одно значение, а вам их придется кудато записать и ничего не возврашать
1
Serdox
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 32
14.01.2013, 23:45  [ТС] #3
А как эту функцию рекурсии написать? Я час сидел думал ничего что то не приходит!
0
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
15.01.2013, 00:47 #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;
 
}
1
Serdox
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 32
15.01.2013, 01:15  [ТС] #5
Большое Спасибо! Вы меня спасли!

Добавлено через 19 минут
Только там X(n-1)-это предыдущий элемент, а не умножение.
Как это можно поправить. Буду очень признателен!
0
FreeMinder
36 / 36 / 2
Регистрация: 29.08.2012
Сообщений: 59
15.01.2013, 10:50 #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 считать будем до бесконечности
1
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
15.01.2013, 11:51 #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четное то мы считаем Х
1
Serdox
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 32
15.01.2013, 14:32  [ТС] #8
Спасибо всем большое!
0
15.01.2013, 14:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2013, 14:32
Привет! Вот еще темы с ответами:

Используя рекурсивную функцию напечатать указанный рисунок - C++
12. Используя рекурсивную функцию, напечатать следующую таблицу

Вычислить значение выражения используя рекурсивную функцию - C++
нужна помощь z=(n!+m!)*n! Значение n,m вводит пользователь . Учесть что 0!=1 , 1!=1 Добавлено через 16 минут #include...

Найти сумму ряда используя рекурсивную функцию - C++
Нужно найти сумму S=1/sin(1)+1/(sin(1)+sin(2))+1/(sin(1)+sin(2) ... +sin(n)). Очень срочно!!

Найти НОД используя рекурсивную функцию вычисления - C++
Даны натуральные числа n, m; найти НОД(m, n). Написать программу, использующую рекурсивную функцию вычисления НОД, основанную на...


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

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

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