Neste algoritmo, a condição básica da função recursiva é n <= 0. Para qualquer número decimal positivo, as chamadas recursivas param quando o restante chega a zero.
Após o processo recursivo, a forma hexadecimal do restante é concatenada do último para o primeiro modo e é retornada à instrução de chamada.
❑ Veja o código:
valores = list('0123456789ABCDEF')
def dec_hex(n):
if n <= 0:
return ''
rem = n % 16
return dec_hex(n // 16) + valores[rem]
decimal = int(input("Digite um número decimal inteiro: "))
print('DEC: ', decimal)
print('HEX: ',dec_hex(decimal))
Versão iterativa:
Neste programa, dentro do loop while, dividimos o número decimal até que ele se reduza a zero e simultaneamente concatenamos a forma hexadecimal do restante para a string hexadecimal usando a lista "valores".
❑ Código Iterativo:
valores = list('0123456789ABCDEF')
decimal = int(input("Digite um número inteiro positivo: "))
hexadecimal = ''
print('DEC: ', decimal)
while decimal > 0:
rem = decimal % 16
hexadecimal = valores[rem] + hexadecimal
decimal = decimal // 16
print('HEX: ', hexadecimal)
❑ Saiba mais sobre as principais diferenças entre recursividade e iteratividade com outras respostas minhas:
Gustastrada
Implementação recursiva:
Neste algoritmo, a condição básica da função recursiva é n <= 0. Para qualquer número decimal positivo, as chamadas recursivas param quando o restante chega a zero.
Após o processo recursivo, a forma hexadecimal do restante é concatenada do último para o primeiro modo e é retornada à instrução de chamada.
❑ Veja o código:
valores = list('0123456789ABCDEF')
def dec_hex(n):
if n <= 0:
return ''
rem = n % 16
return dec_hex(n // 16) + valores[rem]
decimal = int(input("Digite um número decimal inteiro: "))
print('DEC: ', decimal)
print('HEX: ',dec_hex(decimal))
Versão iterativa:Neste programa, dentro do loop while, dividimos o número decimal até que ele se reduza a zero e simultaneamente concatenamos a forma hexadecimal do restante para a string hexadecimal usando a lista "valores".
❑ Código Iterativo:
valores = list('0123456789ABCDEF')
decimal = int(input("Digite um número inteiro positivo: "))
hexadecimal = ''
print('DEC: ', decimal)
while decimal > 0:
rem = decimal % 16
hexadecimal = valores[rem] + hexadecimal
decimal = decimal // 16
print('HEX: ', hexadecimal)
❑ Saiba mais sobre as principais diferenças entre recursividade e iteratividade com outras respostas minhas: