Форум программистов, компьютерный форум, киберфорум C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 04.11.2016
Сообщений: 35

Заменить цикл на рекурсию

27.11.2016, 19:04. Показов 2003. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вообщем, есть цикл который считает простую задачу:
Пусть V1=1, V2=2, Vi=2*Vi-1+3*Vi-2, i=3,4,… . Дано n. Получить Vn.
Вот код:
C Скопировано
1
2
3
4
5
6
7
8
9
10
11
int cycle(int n)
{
    int Vn, V1 = 1, V2 = 2;
    for (int i = 3; i <= n; i++)
    {
        Vn = 2 * V2 + 3 * V1;
        V1 = V2; // V[i-2]
        V2 = Vn; // V[i-1]
    }
    return Vn;
}
Нужно заменить этот цикл - рекурсией.
Как сделать это не могу понять, голову ломаю второй час, в гугле только примеры с факториалом.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.11.2016, 19:04
Ответы с готовыми решениями:

Заменить цикл на рекурсию
a0=1, ak=k*ak-1+1/k, k=1,2,... . Дано n. Получить an. int cycle (int n){ double a0=1; for (int i,k = 1; i&lt;=n; k++, i++) { ...

Изменить код вызываемой функции для расчета ряда фибоначчи; заменить рекурсию на цикл; добавить вывод на экран
Помогите изменить код вызываемой функции для расчета ряда фибоначчи, но заменить рекурсию на цикл, и что бы она выводилась на экране) ...

Постфикс в префикс, используя цикл или рекурсию
Скажите пожалуйста можно ли сделать программку конвертер с постфикса в префикс используя только цикл или рекурсию, без стэка и без дерева?

4
109 / 108 / 74
Регистрация: 18.11.2013
Сообщений: 304
27.11.2016, 19:09
Лучший ответ Сообщение было отмечено EnjoyC как решение

Решение

EnjoyC,
C Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
 
int rec(int n)
{
    if(n==1)
        return 1;
    else if(n==2)
        return 2;
    else
        return 2 * rec(n-1) + 3*rec(n-2);
}
 
int main()
{
    printf("%d", rec(4));
    
    return 0;
}
1
2 / 2 / 0
Регистрация: 04.11.2016
Сообщений: 35
27.11.2016, 19:14  [ТС]
Спасибо!)
Почему в main rec(4) а не rec(n)?
0
109 / 108 / 74
Регистрация: 18.11.2013
Сообщений: 304
27.11.2016, 19:17
EnjoyC, в main вставьте то число для которого хотите вычислить значение V. Число 4 просто для примера
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
37683 / 20928 / 4290
Регистрация: 12.02.2012
Сообщений: 34,405
Записей в блоге: 14
27.11.2016, 21:02
Этот код при больших n будет сильно тормозить. Лучше так:

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
#include <stdio.h>
#include <stdlib.h>
 
int f(int n, int c, int p)
{
    if (n==1) 
       return p;
    else   
       if (n==2)
          return c;
       else
          return f(n-1, 2*c+3*p,c);
}          
 
int main(int argc, char *argv[])
{
 
  int n;
  printf("n=");
  scanf("%d",&n);
  printf("f=%d\n",f(n,2,1));
    
  system("PAUSE");  
  return 0;
 
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.11.2016, 21:02
Помогаю со студенческими работами здесь

Заменить циклы на рекурсию
Помогите пожалуйста сделать рекурсию для циклов. Понятия не имею как она делается( #include &quot;stdafx.h&quot; #include...

Заменить цикл рекурсией
Дана функция. float result(double x1, double e) { double x2; float temp; x2 = x1; Ufunction = function; Ufunction1 =...

Заменить рекурсию на цикл
Как можно заменить данную рекурсию на цикл? #define pc putchar_unlocked void put (long long int num) { if (!num) { ...

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

Как заменить цикл while на рекурсию?
Как сделать в даной функции, вычисления через рекурсию, а не через цикл... тут происходит розложение в ряд Тейлора, ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер