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))
)
谢谢您的帮助。
你的辅助函数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中的函数体。
你在错误的地方有一个紧密的支架。