繁体   English   中英

方案中的阿克曼 Function

[英]Ackerman Function in Scheme

我已经设置了我的 function 但我不确定为什么它没有按照我的预期工作。

(define (ack m n) (if (= m 0) (+ n 1)

           (if (and (> m 0) (= n 0)) (ack (- m 1) 1)
                          
                 (if (and (> m 0) (> n 0)) (ack (- m 1) (- n 1))))))

这就是我所关注的:

阿克曼 Function

编辑:

(define (ack m n) 
   (if (= m 0) 
       (+ n 1)
       (if (and (> m 0) (= n 0)) 
           (ack (- m 1) 1)
           (if (and (> m 0) (> n 0)) 
               (ack (- m 1) (ack m (- n 1)))))))

我是个白痴,我在再次查看阿克曼 function 后能够得到它

正确缩进代码有助于查看其结构是否正确:

(define (ack m n) 
   (if (= m 0) 
       (+ n 1)
       (if (and (> m 0) (= n 0)) 
           (ack (- m 1) 1)
           (if (and (> m 0) (> n 0)) 
               (ack (- m 1) (- n 1))
               ;; otherwise ......... what?
               ))))

一个if表达式最好有两个分支,即consequentalternate ,否则如果测试失败并且没有备用,在 R5RS 下结果是 undefined 在 Racket 中,这种结构甚至是不合法的。

(那是在阅读你的代码之前,只是从它的结构来看)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM