Clojure 和函数式编程入门。查看尚未出版的编程 Clojure 书籍第三版第 10 章中的在一定范围内添加数字的缓慢示例。
如何向此循环添加 println 以便我可以看到 sum 的值发生变化?
; performance demo only, don't write code like this
(defn sum-to [n]
(loop [i 1 sum 0]
(if (<= i n)
(recur (inc i) (+ i sum))
sum)))
最佳答案
loop
宏接受多个主体表达式,因此您可以在 if
表达式之前插入一个具有副作用的 println
表达式:
(defn sum-to [n]
(loop [i 1 sum 0]
(println sum)
(if (<= i n)
(recur (inc i) (+ i sum)) sum)))
这里 Clojure 将使用主体中最后一个表达式的结果作为整个循环表达式的返回值。示例:
(sum-to 5)
;; 0
;; 1
;; 3
;; 6
;; 10
;; 15
;;=> 15
关于recursion - 在 Clojure 中,我可以在哪里将 print 函数放置在循环/递归中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45676785/