Muy buenas a todos/as! Haciendo el ejercicio 102 de C (aunque en C++, que es lo que estoy aprendiendo), se me ocurrió utilizar una función recursiva que fuera escribiendo los valores en un array desde el índice 0 hasta el índice x, pero no sé por qué no funciona (al final con un par de bucles for escribo los datos y los muestro en pantalla). Si alguien pudiera decirme en qué falla la función le estaría muy agradecido :D
Aquí está:
void convbin( int num, int index ){
if ( num <= 2 ){
bin[index + 1] = num%2;
}
else {
convbin (num/2, 0);
}
}
Saludos!
No me fijé mucho pero en la llamada recursiva, siempre envías index=0.
Muchas gracias por tu respuesta, voy a ver si llego a alguna solución jajajalo dejaba en 0 porque no quería que aumentara el valor hasta llegar al if, pero tienes razón, así como está siempre va a ser 1 aún después de llegar al if.
Saludos!
Por si te interesa, modifiqué un poco el código para que quede funcional. Eso sí, el array queda invertido.
Spoiler
void convbin( int num, int index ){
if ( num > 0 ){
bin[index] = num%2;
convbin (num/2, index+1);
}
}
Muchas gracias! Lo que no entiendo es a qué te refieres con que queda invertido, en principio el primer módulo (el que estaría a la izquierda) lo escribe en la posición
- no? Así queda mucho mejor que le mío la verdad jajaja
Invertido me refería a que si leemos del 0 al X el array, queda "01011", cuando el orden de lectura normal es "11010". pero bueno, era solo un dato xD
Aaah, pero así queda con un bucle también, luego se imprime desde el último índice escrito y ya está :D