话不多说 先上代码
(defn product [ term a nxt b]
(defn iter [a result]
(if
(> a b)
1
(* (term a) (iter (nxt a) result))
)
)
(iter a 1)
)
跟习题1.30比较起来,就是两个地方不同 乘法不能乘0 必须是1。难度来讲,跟1.30难度是一样的。增加了迭代过程与递归过程两种模式,先搞定迭代模式。
两个合并的话 应该也是可以
(defn product [ term a nxt b f2 defval]
(defn iter [a result]
(if
(> a b)
defval
(f2 (term a) (iter (nxt a) result))
)
)
(iter a defval)
)
过程自然是迭代的方式