Ir para o conteúdo

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