Hey!! buenas a todos los apasionados de esto de la programacion, me acabo de inscribir
en el foro. Yo soy unas de esas personas que cuando encuentra un codigo que no
entiende, trata estudiar como funciona cada expresion, funcion etc;
En fin la cuestion es que me he topado con un codigo que me cuesta un poco comprenderlo
especificamente se trata de una funcion recursiva que lo que hace es convertir un un
numero decimal a binario miren esta es la funcion:
Lo que llegue a entender es que si dvide es mayor que cero, se ejecuta la funcion
que luego es multiplicada por diez y se le suma uno. Por decirlo si yo le paso un siete
a la funcion, en un primer momento resto valdria 1 y divide seria 3 como ven
divide es mayor que cero, por lo que la funcion se ejecuta.
Lo mas logico es que la funcion binario(divide) retornara un cero que es
multiplicada por 10 que da 0 y luego se le suma 1 y asi sucesivamente en caso de que
divide no sea mayor que 0 se ejecuta el bloque correspondiente a false que le agrega
cero
Que me corrijan si esto no es asi saludos a todos
en el foro. Yo soy unas de esas personas que cuando encuentra un codigo que no
entiende, trata estudiar como funciona cada expresion, funcion etc;
En fin la cuestion es que me he topado con un codigo que me cuesta un poco comprenderlo
especificamente se trata de una funcion recursiva que lo que hace es convertir un un
numero decimal a binario miren esta es la funcion:
Código (cpp) [Seleccionar]
int binario(int dec)
{
int resto = num % 2;
int divide = num / 2;
return divide > 0 ? binario(divide) * 10 + resto : resto;
}
Lo que llegue a entender es que si dvide es mayor que cero, se ejecuta la funcion
que luego es multiplicada por diez y se le suma uno. Por decirlo si yo le paso un siete
a la funcion, en un primer momento resto valdria 1 y divide seria 3 como ven
divide es mayor que cero, por lo que la funcion se ejecuta.
Lo mas logico es que la funcion binario(divide) retornara un cero que es
multiplicada por 10 que da 0 y luego se le suma 1 y asi sucesivamente en caso de que
divide no sea mayor que 0 se ejecuta el bloque correspondiente a false que le agrega
cero
Que me corrijan si esto no es asi saludos a todos