MIT 方案:未指定 return 值错误
MIT Scheme: Unspecified return value error
MIT Scheme:我正在编写一个函数来计算斐波那契数列的第 n 项(SICP 的第 1.2.2 节),但出现错误:未指定 return 值
(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
最终不包含实际计算的表达式和 return,因此出现错误 ... 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
您可能会受益于使用一些匹配括号的编辑器。例如,如果您的光标在所述括号的开头或结尾处于活动状态,Racket 博士会突出显示包含在一组括号中的函数体。
MIT Scheme:我正在编写一个函数来计算斐波那契数列的第 n 项(SICP 的第 1.2.2 节),但出现错误:未指定 return 值
(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
最终不包含实际计算的表达式和 return,因此出现错误 ... 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
您可能会受益于使用一些匹配括号的编辑器。例如,如果您的光标在所述括号的开头或结尾处于活动状态,Racket 博士会突出显示包含在一组括号中的函数体。