Soma dos Dígitos Usando Recursão

CBeginner
Pratique Agora

Introdução

Recursão é uma técnica de programação onde uma função chama a si mesma, permitindo que a função se repita até que um caso base seja atingido e a função retorne a saída final. Neste laboratório, aprenderemos como encontrar a soma dos dígitos de um determinado número usando recursão.

Nota: Você precisa criar o arquivo ~/project/main.c por conta própria para praticar a codificação e aprender como compilar e executá-lo usando gcc.

cd ~/project
## create main.c
touch main.c
## compile main.c
gcc main.c -o main
## run main
./main

Obtendo a Entrada do Usuário

O primeiro passo é obter a entrada do usuário, que será o número do qual queremos encontrar a soma de seus dígitos. Para fazer isso, usaremos a função scanf para ler a entrada do usuário do fluxo de entrada padrão (stdin).

#include<stdio.h>

int main()
{
    int num;
    printf("Enter a number: ");
    scanf("%d", &num);

    /* Add Code */

    return 0;
}

Definindo a Função Recursiva

Em seguida, escreveremos uma função recursiva para encontrar a soma dos dígitos do número fornecido. A função receberá um inteiro como parâmetro e retornará um inteiro como a soma dos dígitos. A função executará as seguintes etapas:

  1. Se o número for menor que 10, a função retornará o próprio número como a soma dos dígitos.
  2. Se o número for maior ou igual a 10, a função calculará a soma do último dígito e chamará a si mesma com os dígitos restantes como argumento.
int sumOfDigits(int num)
{
    if(num < 10)
    {
        return num;
    }
    else
    {
        return num%10 + sumOfDigits(num/10);
    }
}

Chamando a Função Recursiva

Agora, chamaremos a função recursiva definida no passo anterior com a entrada do usuário obtida no Passo 1. A função retornará a soma dos dígitos do número como um inteiro.

#include<stdio.h>

int sumOfDigits(int num);

int main()
{
    int num, sum;
    printf("Enter a number: ");
    scanf("%d", &num);

    sum = sumOfDigits(num);

    /* Add Code */

    return 0;
}

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

Exibindo o Resultado

O passo final é exibir a soma dos dígitos do número obtido no Passo 1. Usaremos a função printf para exibir o resultado no fluxo de saída padrão (stdout).

#include<stdio.h>

int sumOfDigits(int num);

int main()
{
    int num, sum;
    printf("Enter a number: ");
    scanf("%d", &num);

    sum = sumOfDigits(num);

    printf("Sum of digits of %d is: %d", num, sum);

    return 0;
}

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

Resumo

Neste laboratório, aprendemos como encontrar a soma dos dígitos de um número dado usando recursão. Primeiro, obtivemos a entrada do usuário e definimos uma função recursiva para calcular a soma dos dígitos. Em seguida, chamamos a função e exibimos o resultado para o usuário.