Suma de dígitos de un número usando recursividad

Dado un número, necesitamos encontrar la suma de sus dígitos usando recursividad.
Ejemplos: 
 

Input : 12345
Output : 15

Input : 45632
Output :20
          

El proceso paso a paso para una mejor comprensión de cómo funciona el algoritmo. 
Sea el número 12345. 
Paso 1-> 12345 % 10 que es igual a 5 + (envía 12345/10 al siguiente paso) 
Paso 2-> 1234 % 10 que es igual a 4 + (envía 1234/10 al siguiente paso) 
Paso 3-> 123 % 10 que es igual a 3 + (enviar 123/10 al siguiente paso) 
Paso 4-> 12 % 10 que es igual a 2 + (enviar 12/10 al siguiente paso) 
Paso 5 -> 1 % 10 que es igual a 1 + (enviar 1/10 al siguiente paso) 
Paso 6-> 0 el algoritmo se detiene 
El siguiente diagrama ilustrará el proceso de recursión 
 

C++

// Recursive C++ program to find sum of digits
// of a number
#include <bits/stdc++.h>
using namespace std;
 
// Function to check sum of digit using recursion
int sum_of_digit(int n)
{
    if (n == 0)
    return 0;
    return (n % 10 + sum_of_digit(n / 10));
}
 
// Driven code
int main()
{
    int num = 12345;
    int result = sum_of_digit(num);
    cout << "Sum of digits in "<< num
       <<" is "<<result << endl;
    return 0;
}
 
// THis code is contributed by
// SHUBHAMSINGH10

C

// Recursive C program to find sum of digits
// of a number
#include <stdio.h>
 
// Function to check sum of digit using recursion
int sum_of_digit(int n)
{
    if (n == 0)
       return 0;
    return (n % 10 + sum_of_digit(n / 10));
}
 
// Driven Program to check above
int main()
{
    int num = 12345;
    int result = sum_of_digit(num);
    printf("Sum of digits in %d is %d\n", num, result);
    return 0;
}

Java

// Recursive java program to
// find sum of digits of a number
import java.io.*;
 
class sum_of_digits
{
    // Function to check sum
    // of digit using recursion
    static int sum_of_digit(int n)
    {
        if (n == 0)
            return 0;
        return (n % 10 + sum_of_digit(n / 10));
    }
 
    // Driven Program to check above
    public static void main(String args[])
    {
        int num = 12345;
        int result = sum_of_digit(num);
        System.out.println("Sum of digits in " +
                           num + " is " + result);
    }
}
 
// This code is contributed by Anshika Goyal.

Python3

# Recursive Python3 program to
# find sum of digits of a number
 
# Function to check sum of
# digit using recursion
def sum_of_digit( n ):
    if n == 0:
        return 0
    return (n % 10 + sum_of_digit(int(n / 10)))
 
# Driven code to check above
num = 12345
result = sum_of_digit(num)
print("Sum of digits in",num,"is", result)
 
# This code is contributed by "Sharad_Bhardwaj".

C#

// Recursive C# program to
// find sum of digits of a number
using System;
 
class GFG {
     
    // Function to check sum
    // of digit using recursion
    static int sum_of_digit(int n)
    {
        if (n == 0)
            return 0;
             
        return (n % 10 + sum_of_digit(n / 10));
    }
 
    // Driven Program to check above
    public static void Main()
    {
        int num = 12345;
        int result = sum_of_digit(num);
        Console.WriteLine("Sum of digits in " +
                           num + " is " + result);
    }
}
 
// This code is contributed by Anant Agarwal.

PHP

<?php
// Recursive PHP program
// to find sum of digits
// of a number
 
// Function to check sum of
// digit using recursion
function sum_of_digit($n)
{
    if ($n == 0)
        return 0;
    return ($n % 10 +
            sum_of_digit($n / 10));
}
 
// Driven Code
$num = 12345;
$result = sum_of_digit($num);
echo("Sum of digits in " . $num . " is " . $result);
 
// This code is contributed by Ajit.
?>

Javascript

<script>
 
// Recursive Javascript program to find sum of digits
// of a number
 
// Function to check sum of digit using recursion
function sum_of_digit(n)
{
    if (n == 0)
    return 0;
    return (n % 10 + sum_of_digit(parseInt(n / 10)));
}
 
// Driven code
var num = 12345;
var result = sum_of_digit(num);
document.write( "Sum of digits in "+ num
   +" is "+result );
 
</script>

Producción: 

Sum of digits in 12345 is 15

Además de escribir (n==0, luego devolver 0) en el código anterior, también podemos escribirlo de esta manera, no habrá cambios en la salida.

if(n<10) return n; By writing this there will be no need to call the function for the numbers which are less than 10 

Complejidad del tiempo: O(logn) donde n es el número dado. 

Espacio auxiliar: O (logn) debido al espacio de pila recursivo.
 

Publicación traducida automáticamente

Artículo escrito por Shahnawaz_Ali y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *