Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Serg22
104 / 104 / 58
Регистрация: 04.03.2013
Сообщений: 479
Завершенные тесты: 2
1

Найдите N-ый член последовательности, сократив количество рекурсивных вызовов

10.06.2013, 22:25. Просмотров 1061. Ответов 5
Метки нет (Все метки)

Доброго времени суток) Будьте добры, помогите, пожалуйста, с заданием c использованием рекурсии:
Определите закономерность формирования членов последовательности. Найдите N-ый член последовательности, сократив количество рекурсивных вызовов.
(ф-ция в приложении)
Буду премного Вам благодарен.
0
Миниатюры
Найдите N-ый член последовательности, сократив количество рекурсивных вызовов  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2013, 22:25
Ответы с готовыми решениями:

Найдите N-ый член последовательности, сократив количество рекурсивных вызовов
Определите закономерность формирования членов последовательности. Найдите N-ый член...

Найти N-ый член последовательности, сократив количество рекурсивных вызовов
Определите закономерность формирования членов последовательности. Найдите N-ый член...

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

Найти min четный член последовательности и max нечетный член последовательности
Даны натуральные числа н, А1, А2.....Ан. Найти минимум(четный член последовательности) и...

Рекурсия выводит значение счетчика не один раз, а столько, сколько было рекурсивных вызовов
Задача состоит в том, чтобы определить, какой метод сортировки быстрее. В одну функцию (SortBalb) я...

5
Serg22
104 / 104 / 58
Регистрация: 04.03.2013
Сообщений: 479
Завершенные тесты: 2
12.06.2013, 19:06  [ТС] 2
нуу оочень актуально)

Добавлено через 20 часов 34 минуты
Ну будьте так любезны. Очень нужно

Добавлено через 5 часов 46 минут
Ну неужели ни у кого нету простенького примера на нахождения члена любой последовательности?) просто пример хотя бы)
0
Serg22
104 / 104 / 58
Регистрация: 04.03.2013
Сообщений: 479
Завершенные тесты: 2
15.06.2013, 19:41  [ТС] 3
Еще раз прошу помочь )
0
Бубалёх
0 / 0 / 1
Регистрация: 01.12.2010
Сообщений: 34
15.06.2013, 23:26 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Последовательность 1, 2, 2, 4, 8
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
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <math.h>
 
int F (int n,int m,int N);
 
int main (void)
{
    int N;
    setlocale (0, "rus");
    printf ("Введите N\n");
    scanf_s("%d",&N);
    if(N==1)
        printf("N-oe chislo: 1");
    else if(N==2)
        printf("N-oe chislo: 2");
    else 
    printf ("N-oe chislo: %d", (int)pow((float)2,F(0,1,N)));
    _getch();
    return 1;
}
 
int F (int n,int m,int N)
{
    int static x=3;
    if (x++==N)
        return m+n;
    else 
        return F(m,n+m,N);
}
0
Catstail
Модератор
24287 / 12254 / 2209
Регистрация: 12.02.2012
Сообщений: 19,886
16.06.2013, 12:38 5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Вот:

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
#include <math.h>
#include <stdio.h>
 
int Counter; // счетчик вызова
 
double funcGood(int n, double curr, double prev)
{
    Counter++;
 
    if (n == 0)
        return curr;
    else
        return funcGood(n-1, sqrt(curr+prev),curr);
}
 
double funcBad(int n)
{
    Counter++;
 
    if (n <= 2)
        return 1.0;
    else
        return sqrt(funcBad(n-1)+funcBad(n-2));
}
 
int main(int argc, char* argv[])
{
    double r;
 
    // Неоптимальный расчет
 
    Counter=0;
    r=funcBad(20);
    printf("F=%f  C=%d\n\n",r,Counter);
 
    // Оптимальный расчет
 
    Counter=0;
    funcGood(20,1.0,1.0);
    printf("F=%f  C=%d\n\n",r,Counter);
    
    return 0;
 
}
При n=20 F(n)=1.999619, но плохой алгоритм требует 13529 вызовов "плохой" функции, а хороший - только 21 раз вызывает "хорошую"
1
Serg22
104 / 104 / 58
Регистрация: 04.03.2013
Сообщений: 479
Завершенные тесты: 2
16.06.2013, 13:35  [ТС] 6
Огромнейшее Вам спасибо!!
0
16.06.2013, 13:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2013, 13:35

Определите закономерность формирования членов последовательности. Найдите N-ый член последовательности,сократив количество рекурсивных вызовов
Определите закономерность формирования членов последовательности. Найдите N-ый член ...

Посчитать количество рекурсивных вызовов
В коде программы определена следующая функция: int foo(int n) { if (n &lt;= 0) return...

Рекурсия, ряд Фибоначчи (определить количество рекурсивных вызовов функции)
Здравствуйте, уважаемые форумчане ! Подскажите, пожалуйста, как определить количество...


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

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

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