Ferramentas de Site


dev_geral:scheme:funcao_de_ackermann_e_sequencia_de_mewman-conway

Função de Ackermann e Sequência de Mewman-Conway

; Exercicio 12.1 - Função de Ackermann
;
; Exercício resolvido por: Rui Maia <deathseeker25(at)portugal-a-programar(dot)org>
;
; Escreva em Scheme um procedimento para calcular a função de Ackermann, sabendo que 
; esta é definida para inteiros não negativos, recorrendo à recursividade.
 
(define Ackermann
  (lambda (m n)
    (cond ((= m 0)
           (+ 1 n))
          ((and (> m 0) (= n 0))
           (Ackermann (- m 1) 1))
          ((and (> m 0) (> n 0))
           (Ackermann (- m 1) (Ackermann m (- n 1)))))))
 
;Testes:
;
; > (Ackermann 3 4)
;125
;> (Ackermann 4 4)
; user break
;> (Ackermann 3 5)
;253
;> (Ackermann 3 6)
;509
;> (Ackermann 3 12)
; user break
;
 
; Exercício 12.2 - Sequência de Mewman-Conway
; Escreva em Scheme um procedimento para calcular o n-ésimo número na sequência Mewman-Conway.
 
(define Mewman-Conway
  (lambda (n)
    (cond ((or (= n 1) (= n 2))
           1)
          ((> n 2)
           (+ (Mewman-Conway (Mewman-Conway (- n 1))) (Mewman-Conway (- n (Mewman-Conway (- n 1)))))))))
 
;Testes:
;
;> (Mewman-Conway 1)
;1
;> (Mewman-Conway 2)
;1
;> (Mewman-Conway 3)
;2
;> (Mewman-Conway 4)
;2
;> (Mewman-Conway 5)
;3
;> (Mewman-Conway 10)
;6
;> (Mewman-Conway 20)
;12
;> (Mewman-Conway 40)
;user break
dev_geral/scheme/funcao_de_ackermann_e_sequencia_de_mewman-conway.txt · Última modificação em: 2018/05/14 21:37 (edição externa)