Я нашел эту версию функции Аккермана и пытался кодировать его в MIT Scheme Lisp без успеха:объекта не применяется в MIT Scheme (функция а различный Аккерман)
The Ackermann Функция А (т, п)
При т = 0
а (т, п) = п + 1
При т> 0 и п = 0
а (т, п) = а (м-1 , 1)
При т> 0 и п> 0
А (т, п) = А (м-1, А (т, п-1))
(здесь http://www.gfredericks.com/sandbox/arith/ackermann)
Мой Scheme код:
(define (acker2 m n)
(cond ((= m 0)
(+ n 1))
((and (> m 0)
(= n 0))
(acker2 (- m 1)
1))
((and (> m 0)
(> n 0))
(acker2 (- m 1)
(acker2 (m
(- n 1)))))))
Теперь некоторые результаты:
(acker2 0 0) значение: 1
(acker2 0 1) значение: 2
(acker2 0 2) значение: 3
(acker2 2 2) объект 2 не является применимо
(acker2 1 23) объект 1 не применяется
(acker2 8 0) объект 7 не применяется
Какое решение?