Сумма цифр с использованием рекурсии

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

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

Введение

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

Примечание: вам нужно самостоятельно создать файл ~/project/main.c, чтобы практиковать программирование и научиться компилировать и запускать его с использованием gcc.

cd ~/project
## создать main.c
touch main.c
## скомпилировать main.c
gcc main.c -o main
## запустить main
./main

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/variables("Variables") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/FunctionsGroup -.-> c/function_parameters("Function Parameters") c/FunctionsGroup -.-> c/recursion("Recursion") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123340{{"Сумма цифр с использованием рекурсии"}} c/function_declaration -.-> lab-123340{{"Сумма цифр с использованием рекурсии"}} c/function_parameters -.-> lab-123340{{"Сумма цифр с использованием рекурсии"}} c/recursion -.-> lab-123340{{"Сумма цифр с использованием рекурсии"}} c/user_input -.-> lab-123340{{"Сумма цифр с использованием рекурсии"}} c/output -.-> lab-123340{{"Сумма цифр с использованием рекурсии"}} end

Получение ввода от пользователя

Первым шагом является получение ввода от пользователя, который будет числом, сумму цифр которого мы хотим найти. Для этого мы будем использовать функцию scanf для чтения ввода от пользователя из стандартного потока ввода (stdin).

#include<stdio.h>

int main()
{
    int num;
    printf("Введите число: ");
    scanf("%d", &num);

    /* Добавьте код */

    return 0;
}

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

Далее мы напишем рекурсивную функцию для нахождения суммы цифр заданного числа. Функция будет принимать целое число в качестве параметра и возвращать целое число в качестве суммы цифр. Функция будет выполнять следующие шаги:

  1. Если число меньше 10, функция вернет само число в качестве суммы цифр.
  2. Если число больше или равно 10, функция будет вычислять сумму последней цифры и вызывать себя с оставшимися цифрами в качестве аргумента.
int sumOfDigits(int num)
{
    if(num < 10)
    {
        return num;
    }
    else
    {
        return num%10 + sumOfDigits(num/10);
    }
}

Вызов рекурсивной функции

Теперь мы вызовем рекурсивную функцию, определенную на предыдущем шаге, с вводом пользователя, полученным на шаге 1. Функция вернет сумму цифр числа в виде целого числа.

#include<stdio.h>

int sumOfDigits(int num);

int main()
{
    int num, sum;
    printf("Введите число: ");
    scanf("%d", &num);

    sum = sumOfDigits(num);

    /* Добавьте код */

    return 0;
}

int sumOfDigits(int num)
{
    if(num < 10)
    {
        return num;
    }
    else
    {
        return num%10 + sumOfDigits(num/10);
    }
}

Отображение результата

Последним шагом является отображение суммы цифр числа, полученного на шаге 1. Мы будем использовать функцию printf для отображения результата в стандартный поток вывода (stdout).

#include<stdio.h>

int sumOfDigits(int num);

int main()
{
    int num, sum;
    printf("Введите число: ");
    scanf("%d", &num);

    sum = sumOfDigits(num);

    printf("Сумма цифр числа %d равна: %d", num, sum);

    return 0;
}

int sumOfDigits(int num)
{
    if(num < 10)
    {
        return num;
    }
    else
    {
        return num%10 + sumOfDigits(num/10);
    }
}

Резюме

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