Сумма первых N чисел с использованием рекурсии

CCBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабе мы узнаем, как использовать рекурсию для нахождения суммы первых N чисел. Мы напишем программу на языке C, которая будет запрашивать у пользователя ввод, вычислять сумму первых N чисел и выводить результат пользователю. Рекурсия - это техника программирования, при которой функция вызывает сама себя для решения проблемы.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/FileHandlingGroup(["File Handling"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/FunctionsGroup -.-> c/function_parameters("Function Parameters") c/FunctionsGroup -.-> c/recursion("Recursion") c/FileHandlingGroup -.-> c/create_files("Create Files") c/FileHandlingGroup -.-> c/read_files("Read Files") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/function_declaration -.-> lab-123342{{"Сумма первых N чисел с использованием рекурсии"}} c/function_parameters -.-> lab-123342{{"Сумма первых N чисел с использованием рекурсии"}} c/recursion -.-> lab-123342{{"Сумма первых N чисел с использованием рекурсии"}} c/create_files -.-> lab-123342{{"Сумма первых N чисел с использованием рекурсии"}} c/read_files -.-> lab-123342{{"Сумма первых N чисел с использованием рекурсии"}} c/user_input -.-> lab-123342{{"Сумма первых N чисел с использованием рекурсии"}} c/output -.-> lab-123342{{"Сумма первых N чисел с использованием рекурсии"}} end

Создание файла и определение главной функции

Сначала мы создадим новый файл с именем main.c. Главная функция запрашивает у пользователя ввод значения N, передает этот ввод в рекурсивную функцию суммы и затем выводит результат.

#include<stdio.h>

int getSum(int);

int main()
{
    printf("This program finds the sum of the first N numbers using recursion.\n");

    int n, sum;
    printf("\nEnter the value of N: ");
    scanf("%d", &n);

    sum = getSum(n);

    printf("\nThe sum of the first %d numbers is %d\n", n, sum);

    return 0;
}

Определение рекурсивной функции суммы

В этом шаге мы определим рекурсивную функцию суммы getSum(). Эта функция принимает целый параметр n и возвращает сумму первых n целых чисел. Эта функция вызывается рекурсивно, пока мы не достигнем случая, когда n меньше или равно 0.

int getSum(int n)
{
    static int sum = 0;

    if (n <= 0) {
        return sum;
    }

    sum += n;
    getSum(n-1);
}

static int sum = 0; используется для создания статической локальной переменной. Поскольку это рекурсия, при каждом вызове getSum() будет использоваться та же переменная.

Запуск кода

Теперь программа готова к запуску. Скомпилируйте и запустите программу с использованием следующей команды:

$ gcc main.c -o main
$./main

Полный листинг кода

#include<stdio.h>

int getSum(int);

int main()
{
    printf("This program finds the sum of the first N numbers using recursion.\n");

    int n, sum;
    printf("\nEnter the value of N: ");
    scanf("%d", &n);

    sum = getSum(n);

    printf("\nThe sum of the first %d numbers is %d\n", n, sum);

    return 0;
}

int getSum(int n)
{
    static int sum = 0;

    if (n <= 0) {
        return sum;
    }

    sum += n;
    getSum(n-1);
}

Резюме

В этом практическом занятии мы узнали, как использовать рекурсию в программировании на C для нахождения суммы первых N чисел. Мы создали программу, которая принимает ввод от пользователя, использует рекурсивную функцию для вычисления суммы первых N целых чисел и выводит результат пользователю.