Programa en C para invertir los dígitos de un número usando recursividad

Dado un entero N , la tarea es invertir los dígitos del entero dado usando la recursividad .

Ejemplos:

Entrada: N = 123
Salida: 321
Explicación:
El reverso del número dado es 321.

Entrada: N = 12532
Salida: 23521
Explicación:
El reverso del número dado es 23521.

Enfoque: siga los pasos a continuación para resolver el problema:

  • Iterar recursivamente cada dígito de N .
  • Si el valor actual de N pasado es menor que 10 , devuelve N.

si (num < 10)
     devuelve N;

  • De lo contrario, después de cada llamada recursiva ( excepto el caso base ), devuelva la función recursiva para la próxima iteración:

    return reverse(N/10) + ((N%10)*(pow(10, (piso(log10(abs(N)))))))

donde, floor(log10(abs(x))) da el conteo de dígitos de x
((x%10)*(pow(10, (floor(log10(abs(x))))))) coloca la unidad extraída coloque dígitos (x% 10) en sus posiciones deseadas

A continuación se muestra la implementación del enfoque anterior:

C

// C program for the above approach
  
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
  
// Function to reverse the digits of
// the given integer
int reverse(int N)
{
    return ((N <= 9))
               ? N
               : reverse(N / 10)
                     + ((N % 10)
                        * (pow(10,
                               (floor(log10(
                                   abs(N)))))));
}
  
// Utility function to reverse the
// digits of the given integer
void reverseUtil(int N)
{
    // Stores reversed integer
    int result = reverse(N);
  
    // Print reversed integer
    printf("%d", result);
}
  
// Driver Code
int main()
{
    // Given integer N
    int N = 123;
  
    // Function Call
    reverseUtil(N);
  
    return 0;
}
Producción:

321

Complejidad de tiempo: O(log 10 N)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por notavacillator 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 *