Recursividad aplicada: Convertir Decimal a Binario

Siguiendo con esto de la recursividad hoy les traigo un nuevo programín, Convertir Decimal a Binario de forma recursiva.

#include
void binario(int n)
{
    if (n!=0)
    {
        binario(n/2);
        printf("%i",n%2);
    }
}
int main()
{
    int num=0;
    printf("::CONVERTIR DECIMAL A BINARIO::n");
    printf("Introduce un numero: ");scanf("%i",&num); //Pedir variable num
    printf("t");binario(num);printf("n"); //Llamar la función
    return 0;
}

Está basado en el método que usamos para convertir un número decimal a binario “a mano”: dividir el número entre dos hasta que quede 0 y apuntar los residuos del último al primero.

19 thoughts on “Recursividad aplicada: Convertir Decimal a Binario

  1. Magnífico código. Hoy he descubierto tu blog y me estoy guardando algún código que otro en mi gestor de snippets ( una pena no haya ninguno para Linux).

    De nuevo buen trabajo.

    1. Como hace la funcion binario el regreso, si entiendo que mientras que n no sea 0 entre en el ifm pero no veo un return o algo que me señale que debe ir saliendose de cada llamada a la funcion recursiva, como es la lógica???

  2. muuuyyy biien pero una pregunta, como inserto este código dentro de un switch, apenas estoy comenzando a usar el c++? gracias..!

    1. Hola angelica, no debe retornar a cero, de hecho no debe haber nada dentro de esa instruccion, es solo el caso base de la recursividad, debido a que si te dijas, si tu pones el numero 120, lo que va a hacer, es retornarte el valor de la primera posicion, hasta llegar a 0.

  3. Esn el mismo pero convierte a octal!!!

    #include
    #include
    void octal(int n)
    {
    if (n!=0)
    {
    octal(n/8);
    printf(“%i”,n%8);
    }
    }
    int main()
    {
    int num=0;
    printf(“::CONVERTIR DECIMAL A OCTAL::n”);
    printf(“Introduce un numero: “);scanf(“%i”,&num); //Pedir variable num
    printf(“t”);octal(num);printf(“n”); //Llamar la función
    getch();
    return 0;
    }

  4. y si quisiera guardar el binario en una cadena por que como sabes el tipo de dato entero(int) no tendria una capacidad para guardar numero tangrandes
    como le haria???

  5. void binario(int n)
    {
    if (n!=0)
    {
    printf(“%i”,n%2);
    binario(n/2);
    }
    }

    Creo que seria mejor asi.

  6. Hola, en este caso cual es la instrucción que ordena el resultado de atrás para adelante? Voy comenzando con C++ y no entiendo esto muy bien.

    Gracias!!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s