为什么对我的过程中的参数得到一个“不”的函数的错误?

问题描述 投票:2回答:1

我要通过这本书的结构和解释计算机程序设计,它使用方案,我只是通过递归的部分了。我写了一个程序锻炼1.11:

函数f由规则定义的F(N)= N如果n <3和F(N)= F(N - 1)+ 2F(N - 2)+ 3F(N - 3)如果n> 3。写,通过递归过程来计算为f的过程。编写通过迭代过程的装置计算为f的过程。

我写的代码在repl.it,当我运行与输入2的procdure,它给我的错误:Error: 2 is not a function [fRecurse, (anon)]。有人能向我解释这是什么意思,我该如何解决?为什么我的期望输入是一个函数?

码:

(define (fRecurse n)(
(cond ((< n 3) n)
      ((>= n 3) 
        (+ (procRecurse (- n 1))
           (* 2 (f (- fRecurse 2)))
           (* 3 (f (- fRecurse 3))))))))
(fRecurse 2)
function syntax compiler-errors functional-programming scheme
1个回答
2
投票

该错误是由于一对额外的括号(cond...)之前。为了解决这个问题,我们只是删除多余的圆括号:

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

(fRecurse 2)

我对你的例子做了一些额外的修复,使其正常工作:

  • 更改ffRecurse
  • 更改procRecursefRecurse
  • 更改(* 2 (f (- fRecurse 2)))(* 2 (fRecurse (- n 2)))
  • 更改(* 3 (f (- fRecurse 3)))(* 3 (fRecurse (- n 3)))

请参阅更新的repl.it

© www.soinside.com 2019 - 2024. All rights reserved.