MIT Scheme:未指定的返回值错误

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

MIT Scheme:我正在编写一个函数来计算Fibonacci系列的第n项(SICP的第1.2.2节),但我得到的错误是:未指定的返回值

(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))
)

谢谢您的帮助。

scheme fibonacci mit-scheme
2个回答
1
投票

你的辅助函数fib-iter在结尾处缺少一个结束括号,还有一个额外的fib结束括号。结果,行(fib-iter 0 1 1)包含在fib-iter中,而fib最终不包含实际评估和返回的表达式,因此错误... 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

您可能会因使用一些与括号匹配的编辑器而受益。例如,如果光标在所述括号的打开或关闭时处于活动状态,Dr。Racket会突出显示包含在一组parens中的函数体。


-2
投票

你在错误的地方有一个紧密的支架。

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