0

このバージョンの Ackermann の関数を見つけて、MIT Scheme Lisp でコーディングしようとしましたが、成功しませんでした。

アッカーマン関数 A(m,n)

m=0のとき

A(m,n)=n+1

m>0かつn=0の場合

A(m,n)=A(m-1,1)

m>0かつ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 は適用されません

解決策は何ですか?

4

1 に答える 1