Introdução à recursividade
; Exercicio 11 - Introducao à Recursividade
;
; Exercícios resolvidos por: Rui Maia <deathseeker25@portugal-a-programar.org>
;
; 11.1. O procedimento imprime-ate-base-20 tem como argumentos o numero que tera
; de converter e a base em que pretende que seja convertido. A base maxima que o
; procedimento deve converter é 20, sendo que para alem dos codigos decimais (0
; a 9) utiliza ainda as letras a,b,c,d,e,f,g,h,i,j e k.
(define a-partir-de-10
(lambda (num)
(cond ((< num 10)
(display num))
((= num 10) 'a)
((= num 11) 'b)
((= num 12) 'c)
((= num 13) 'd)
((= num 14) 'e)
((= num 15) 'f)
((= num 16) 'g)
((= num 17) 'h)
((= num 18) 'i)
((= num 19) 'j)
((= num 20) 'k)
((> num 20) (display "Erro. O programa so converte ate base 20.")))))
(define imprime-ate-base-20
(lambda (num base)
(cond ((< num 2)
(display num))
((< (remainder num base) 10)
(imprime-ate-base-20 (quotient num base) base)
(display (remainder num base)))
((>= (remainder num base) 10)
(imprime-ate-base-20 (quotient num base) base)
(a-partir-de-10(remainder num base))))))
;> (imprime-ate-base-20 76 11)
;06a
;> (imprime-ate-base-20 76 16)
;04c