在输入的递归中重复n次函数(没有循环重复)

时间:2014-03-06 09:20:13

标签: clojure

我知道我可以用循环和重复来解决我的问题,但它似乎是一个简单的(常见的?)操作,我想知道在clojure中没有单个函数或者更简洁的方法然后循环/重复来解决这个问题。我搜索了它但却找不到东西。

我正在寻找的功能如下。

(the-function n input some-function)

其中n是在输入上重新调用some-function的时间。

一个简单的例子是:

(the-function 3 1 (fn [x] (+ x 1)))
=> 4 

在Clojure中有类似的东西吗?

祝你好运

2 个答案:

答案 0 :(得分:9)

你想要的基本上是iterate。它将生成函数重复应用于种子输入的无限序列。因此,要复制您在此处描述的行为,您可以写:

(nth (iterate some-function input) n)

答案 1 :(得分:1)

试试这个:

(defn your-iterate-fn [times init-param the-fn] 
    (last (take (inc times) (iterate the-fn init-param))))
(your-iterate-fn 3 1 (fn [x] (+ x 1)))
==> 4