<分区>
我找到了这个版本的 Ackermann 函数,并尝试用 MIT Scheme Lisp 编写它,但没有成功:
The Ackermann Function A(m,n)
When m=0
A(m,n)=n+1
When m>0 and n=0
A(m,n)=A(m-1,1)
When m>0 and n>0
A(m,n)=A(m-1,A(m,n-1))
(在这里找到http://www.gfredericks.com/sandbox/arith/ackermann)
我的方案代码:
(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 不适用
解决方案是什么?