麻省理工学院计划:我正在编写一个函数来计算斐波那契数列的第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))
)
感谢您的帮助。
答案 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)
你在错误的地方有一个近距离。