我想创建一个闭包(函数生成器)来将数字提升为幂,而不使用特定的Clojure库来完成此任务。现在,我可以用循环来做这件事。复发。
(defn exp1
[in-num in-exp-multi]
(loop [num in-num exp-multi in-exp-multi]
(if (> exp-multi 1)
(recur (* num in-num) (- exp-multi 1))
num)))
我尝试过使用partial来提高功率,但是我仍然坚持使用重复乘以一些数字所需的构造。所以,我正在寻找一个生成函数并应用x次的例子。
这个例子只是用循环来解决问题..复发。我的愿望是用封闭来解决这个问题。
答案 0 :(得分:7)
我无法从你的问题中准确地告诉你要求的是什么,但也许这个?
(defn powers-of [exponent]
(iterate #(* % exponent) 1))
(defn nth-power-of [exponent]
(partial nth (powers-of exponent)))
((nth-power-of 5) 2) ;; returns 25
我认为iterate
是您根据描述寻找的内容;它会为种子创建一个懒惰的函数seq。
答案 1 :(得分:2)
这将返回两个参数的闭包 -
(defn exp1
[in-num in-exp-multi]
(fn []
(loop [num in-num exp-multi in-exp-multi]
(if (> exp-multi 1)
(recur (* num in-num) (- exp-multi 1))
num))))