我正在尝试定义两个函数,它们是指数函数和斐波那契函数的迭代版本expo-iter
。fibonacci-iter
我了解如何执行阶乘函数(见下文),但我没有得到这两个函数。因为expo-iter
应该有两个变量(b
e
),而fibonnaci-iter
只有一个变量(n
)。
(define factorial (lambda (n) (fact-iter 1 1 n)))
(define fact-iter
(lambda (product counter max)
(if (> counter max)
product
(fact-iter (* counter product) (+ counter 1) max))))
; (factorial 4)
; (fact-iter 1 1 4)
; (fact-iter 1 2 4)
; (fact-iter 2 3 4)
; (fact-iter 6 4 4)
; (fact-iter 25 5 4)
; (24)