我有这段代码知道参数是通过需要使用调用传递的:
(define fact-2
(let ((foo (lambda (n f)
(if (zero? n)
1
(f n f)))))
(lambda (n)
(let ((res 1))
(foo n (begin
(set! res (* res n))
(set! n (- n 1))
foo))
res))))
我觉得我错过了一些东西,但是在需要调用foo
这个对象 as的调用中f
,它会计算f
一次,然后永远不会更新res
and n
。这个对吗?我错过了什么吗?
谢谢你。