Заменить циклы на рекурсию - C (СИ)
Формулировка задачи:
Помогите пожалуйста сделать рекурсию для циклов. Понятия не имею как она делается(
#include "stdafx.h"
#include "conio.h"
#include "locale.h"
#include "math.h"
int input();// Ввод N
int input2();// Ввод x
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"Russian");
int N, i;
double x, flag, S1, S2;
N=input();// Ввод N
x=input2();// Ввод x
S1=sin(x);
for(i=1; i<N; i++)
{
S1=S1*sin(x);
}
printf(" S1=%lf\n", S1);
flag=x;
for(i=1; i<N; i++)
{
flag=flag*x;
}
S2=sin(flag);
printf(" S2=%lf\n", S2);
_getch();
return 0;
}
int input()// Ввод N
{
int N;
printf("\n Введите натуральное число N: ");
scanf("%d", &N);
return N;
}
int input2()// Ввод x
{
double x;
printf("\n Введите вещественное число X: ");
scanf("%lf", &x);
return x;
}Решение задачи: «Заменить циклы на рекурсию»
textual
Листинг программы
#include "stdafx.h"
#include "conio.h"
#include "locale.h"
#include "math.h"
int input(); //ввод N
double for4eg(int N); // вычисление P
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"Russian");
int N;
N=input(); //ввод N
for4eg(N); // вычисление P
printf("\nОтвет: P = %lf", for4eg(N));
_getch();
return 0;
}
//ввод N
int input()
{
int a;
printf("Введите N:");
scanf("%d", &a);
return a;
}
// вычисление P
double for4eg(int N)
{
if (N==1) return (1.0 + 1.0/pow(double(N),1.0/4.0));
return (1.0 + 1.0/pow(double(N),1.0/4.0))*for4eg(N-1);
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы.
- Объявляем функцию
input(), которая считывает на вход N. - Объявляем функцию
for4eg(int N), которая вычисляет P. - В функции
main()считываем N с помощью функцииinput(). - Вызываем функцию
for4eg(N)для вычисления P. - Выводим результат на экран с помощью функции
printf(). - Ждем нажатия клавиши с помощью функции
_getch()и завершаем программу. - В функции
input()считываем на вход int, который является N. - В функции
for4eg(int N)выполняется рекурсивный расчет P. - При N=1 возвращается 1.5.
- В противном случае, результат вычисления P для N-1 умножается на 1.5.
- Возвращаем результат.
- Программа завершается.