这个题目,费了一些时间,写了几个版本,都达不到目标,虽然对题目的理解很到位,也知道要解决这个题目,应该是什么模式。还是费了很多功夫折腾。最后还是注意到提示部分,才明白应当如何实现题目。
代码如下,确实非常简单
(defn repeated[f n] (if (= n 1) f (compose (repeated f (- n 1)) f))
)
compose方法上篇文章已经实现过。我在此再贴一下
(defn compose [x y] (fn [z] (x (y z)) ))
执行结果如下.代码实现了对5^2进行了平方,即对平方操作执行了两次。