话不多说 先上代码
- (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)
- )
过程自然是迭代的方式