习题1. 31

习题1. 31_第1张图片

话不多说 先上代码

(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)
  )

习题1. 31_第2张图片

过程自然是迭代的方式

你可能感兴趣的:(clojure)