Заменить цикл на рекурсию - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д