Заменить цикл на рекурсию - C (СИ) (70222)

Узнай цену своей работы

Формулировка задачи:

Вообщем, есть цикл который считает простую задачу: Пусть V1=1, V2=2, Vi=2*Vi-1+3*Vi-2, i=3,4,… . Дано n. Получить Vn. Вот код:
Листинг программы
  1. int cycle(int n)
  2. {
  3. int Vn, V1 = 1, V2 = 2;
  4. for (int i = 3; i <= n; i++)
  5. {
  6. Vn = 2 * V2 + 3 * V1;
  7. V1 = V2; // V[i-2]
  8. V2 = Vn; // V[i-1]
  9. }
  10. return Vn;
  11. }
Нужно заменить этот цикл - рекурсией. Как сделать это не могу понять, голову ломаю второй час, в гугле только примеры с факториалом.

Решение задачи: «Заменить цикл на рекурсию»

textual
Листинг программы
  1. #include<stdio.h>
  2.  
  3. int rec(int n)
  4. {
  5.     if(n==1)
  6.         return 1;
  7.     else if(n==2)
  8.         return 2;
  9.     else
  10.         return 2 * rec(n-1) + 3*rec(n-2);
  11. }
  12.  
  13. int main()
  14. {
  15.     printf("%d", rec(4));
  16.    
  17.     return 0;
  18. }

Объяснение кода листинга программы

  1. Включаем заголовочный файл для работы с функциями ввода-вывода
  2. Создаем функцию rec(int n) для решения задачи
  3. Проверяем базовый случай, если n равно 1, то возвращаем 1
  4. Проверяем второй базовый случай, если n равно 2, то возвращаем 2
  5. В противном случае, рекурсивно вызываем функцию rec(n-1) и rec(n-2), складываем результаты и умножаем на 2
  6. В функции main() вызываем rec(4) и выводим результат на экран
  7. Завершаем программу, возвращая 0

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы