MIT 方案:未指定 return 值错误

MIT Scheme: Unspecified return value error

MIT Scheme:我正在编写一个函数来计算斐波那契数列的第 n 项(SICP 的第 1.2.2 节),但出现错误:未指定 return 值

(define (fib n) (
     define (fib-iter a b count) (
            if (= count n) a
            (fib-iter b (+ a b) (+ count 1)))
     (fib-iter 0 1 1))
)

感谢您的帮助。

您的辅助函数 fib-iter 末尾缺少一个右括号,fib 有一个额外的右括号。结果,行 (fib-iter 0 1 1) 包含在 fib-iter 中,并且 fib 最终不包含实际计算的表达式和 return,因此出现错误 ... no expression in body ...

这是你想要的:

(define (fib n)
  (define (fib-iter a b count)
    (if (= count n)
        a
        (fib-iter b (+ a b) (+ count 1))))    ; 1 closing bracket added here
  (fib-iter 0 1 1))                           ; 1 closing bracket removed here

您可能会受益于使用一些匹配括号的编辑器。例如,如果您的光标在所述括号的开头或结尾处于活动状态,Racket 博士会突出显示包含在一组括号中的函数体。