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