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

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

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

Вообщем, есть цикл который считает простую задачу: Пусть V1=1, V2=2, Vi=2*Vi-1+3*Vi-2, i=3,4,… . Дано n. Получить Vn. Вот код:
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;
}
Нужно заменить этот цикл - рекурсией. Как сделать это не могу понять, голову ломаю второй час, в гугле только примеры с факториалом.

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

textual
Листинг программы
#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. Создаем функцию 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
Похожие ответы