Заменить цикл на рекурсию - 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;
}
Объяснение кода листинга программы
- Включаем заголовочный файл
для работы с функциями ввода-вывода - Создаем функцию rec(int n) для решения задачи
- Проверяем базовый случай, если n равно 1, то возвращаем 1
- Проверяем второй базовый случай, если n равно 2, то возвращаем 2
- В противном случае, рекурсивно вызываем функцию rec(n-1) и rec(n-2), складываем результаты и умножаем на 2
- В функции main() вызываем rec(4) и выводим результат на экран
- Завершаем программу, возвращая 0