Function 为什么我的过程的参数得到';不是一个函数';错误?

Function 为什么我的过程的参数得到';不是一个函数';错误?,function,syntax,compiler-errors,functional-programming,scheme,Function,Syntax,Compiler Errors,Functional Programming,Scheme,我正在阅读《计算机编程的结构和解释》一书,这本书使用了Scheme,我刚刚读完了关于递归的一部分。我为练习1.11编写了一个程序: 函数f是由规则定义的,如果n3,则f(n)=n。编写一个通过递归过程计算f的过程。编写一个通过迭代过程计算f的过程 我在编写代码时,当我使用输入2运行程序时,它给出了错误:错误:2不是函数[fRecurse,(anon)]。有人能给我解释一下这意味着什么以及我如何解决它吗?为什么它希望我的输入是一个函数 代码: (define (fRecurse n)( (cond

我正在阅读《计算机编程的结构和解释》一书,这本书使用了Scheme,我刚刚读完了关于递归的一部分。我为练习1.11编写了一个程序:

函数f是由规则定义的,如果n3,则f(n)=n。编写一个通过递归过程计算f的过程。编写一个通过迭代过程计算f的过程

我在编写代码时,当我使用输入
2
运行程序时,它给出了错误:
错误:2不是函数[fRecurse,(anon)]
。有人能给我解释一下这意味着什么以及我如何解决它吗?为什么它希望我的输入是一个函数

代码:

(define (fRecurse n)(
(cond ((< n 3) n)
      ((>= n 3) 
        (+ (procRecurse (- n 1))
           (* 2 (f (- fRecurse 2)))
           (* 3 (f (- fRecurse 3))))))))
(fRecurse 2)
(定义(fren)(
(cond((=n3)
(+(procurse(-n1))
(*2(f(-2)))
(*3(f(-3()()())))
(二)

错误是由于
(cond…
之前有一对额外的括号造成的。为了解决这个问题,我们只需删除额外的一对括号:

(define (fRecurse n)
  (cond ((< n 3) n)
      ((>= n 3) 
        (+ (fRecurse (- n 1))
           (* 2 (fRecurse (- n 2)))
           (* 3 (fRecurse (- n 3)))))))

(fRecurse 2)
(定义(fren)
(cond((=n3)
(+(fRecurse(-n1))
(*2(fRecurse(-n2)))
(*3(fRecurse(-n3(()()))))
(二)
我对您的示例进行了一些额外的修复,以使其正确工作:

  • f
    更改为
    f
  • procurse
    更改为
    fRecurse
  • (*2(f(-fRecurse-2)))
    更改为
    (*2(fRecurse-n2))
  • (*3(f(-f3)))
    更改为
    (*3(f3))

请参阅更新的

这更像是一个语法问题,因此我认为“algorithm”标记在这里不合适。@ElliottSmith重提了很多次,我甚至没有意识到我犯了那么多错误。