MIT方案:我正在编写一个函数来计算斐波那契数列的第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))
)
谢谢你的帮助。
发布于 2017-12-28 07:01:45
您的辅助函数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将突出显示包含在一组括号中的函数体。
https://stackoverflow.com/questions/47999278
复制相似问题