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

时间:2017-12-27 22:16:12

标签: scheme fibonacci mit-scheme

麻省理工学院计划:我正在编写一个函数来计算斐波那契数列的第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))
)

感谢您的帮助。

2 个答案:

答案 0 :(得分: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中的函数体。

答案 1 :(得分:-2)

你在错误的地方有一个近距离。