Заменить циклы на рекурсию - 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);
    }

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы.
  2. Объявляем функцию input(), которая считывает на вход N.
  3. Объявляем функцию for4eg(int N), которая вычисляет P.
  4. В функции main() считываем N с помощью функции input().
  5. Вызываем функцию for4eg(N) для вычисления P.
  6. Выводим результат на экран с помощью функции printf().
  7. Ждем нажатия клавиши с помощью функции _getch() и завершаем программу.
  8. В функции input() считываем на вход int, который является N.
  9. В функции for4eg(int N) выполняется рекурсивный расчет P.
  10. При N=1 возвращается 1.5.
  11. В противном случае, результат вычисления P для N-1 умножается на 1.5.
  12. Возвращаем результат.
  13. Программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы