Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/scheme/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Recursion 对象不适用于MIT方案(不同的Ackermann函数)_Recursion_Scheme_Lisp_Mit Scheme_Ackermann - Fatal编程技术网

Recursion 对象不适用于MIT方案(不同的Ackermann函数)

Recursion 对象不适用于MIT方案(不同的Ackermann函数),recursion,scheme,lisp,mit-scheme,ackermann,Recursion,Scheme,Lisp,Mit Scheme,Ackermann,我找到了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)) (在这里找到) 我的计划编号: (define (acker2 m n) (cond ((= m 0) (+ n 1)) ((and (&g

我找到了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))

(在这里找到)

我的计划编号:

(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

(阿克尔2) 对象2不适用

(acker2 1 23) 对象1不适用

(acker2 8 0) 对象7不适用

解决方案是什么?

上一个表达式中有一个错误(括号太多):

(acker2 (m (- n 1)))
这应该是:

(acker2 m (- n 1))
请记住,在Lisp/Scheme
(a b1 b2…
中,表示“将函数
a
应用于参数
b1 b2…
”。消息“对象2不适用”的确切含义是:
m
等于2,系统尝试将其应用于
(-n1)
。但是数字2(“对象2”)不是函数(“不适用”)。

最后一个表达式中有一个错误(括号太多):

(acker2 (m (- n 1)))
这应该是:

(acker2 m (- n 1))
请记住,在Lisp/Scheme
(a b1 b2…
中,表示“将函数
a
应用于参数
b1 b2…
”。消息“对象2不适用”的确切含义是:
m
等于2,系统尝试将其应用于
(-n1)
。但数字2(“对象2”)不是函数(“不适用”)