2.- Confeccione una función recursiva que reciba un número natural y retorne un string conteniendo su equivalente hexadecimal.
El algoritmo es el mismo del anterior: Se divide consecutivamente el número entero por 16 (la base) y se concatenan los restos de la división. Cabe destacar que como la recolección de los restos debe ser en sentido inverso la recursión debe ser antes de la concatenación con el dígito resultante.
La implementación en Java es la siguiente:
public static String hexadecimal(int n){ //Si el entero llega a ser cero, quiere decir que terminó la //división y como no queda resultado que calcular retornamos //un espacio vacío (no en blanco, ojo) if (n==0) return ""; //Pero si aún es mayor que cero debemos calcular el resto de //la división por la base y evaluar el caso especial de cada //valor. Recordemos que la base 16 o hexadecimal tiene seis //dígitos más que representan los números decimales del 10 //al 15. int digHex = n%16; switch (digHex){ case 10: return hexadecimal(n/16)+"A"; case 11: return hexadecimal(n/16)+"B"; case 12: return hexadecimal(n/16)+"C"; case 13: return hexadecimal(n/16)+"D"; case 14: return hexadecimal(n/16)+"E"; case 15: return hexadecimal(n/16)+"F"; default: return hexadecimal(n/16)+Integer.toString(digHex); } }
No hay comentarios:
Publicar un comentario