【发布时间】:2021-05-23 23:31:21
【问题描述】:
我的解决方案有什么问题?
(define (halve x) (/ x 2))
(define (double x) (* x 2))
(define (mult-iter acc a b)
(cond ((= b 0) acc)
((even? b) (mult-iter acc (double a) (halve b)))
(else (mult-iter (+ a acc) a (- b 1)))))
(define (* a b)
(mult-iter 0 a b))
当我运行这个解释器失败时:
1 ]=> (load "e1.18.scm")
;Loading "e1.18.scm"... done
;Value: *
1 ]=> (* 2 2)
;Aborting!: maximum recursion depth exceeded
“Paper”调试没有帮助: (* 2 2) -> mult-iter 0 2 2 -> (b is even so) mult-iter 0 4 1 -> (b is not even) -> mult-iter 4 4 0 -> (b is equal到 0) 4.
结果应该是4,我从哪里得到无限递归?
【问题讨论】:
-
请复制您要解决的问题的陈述。
标签: sicp