gpt4 book ai didi

recursion - 在 Clojure 中,我可以在哪里将 print 函数放置在循环/递归中?

转载 作者:行者123 更新时间:2023-12-03 00:03:18 26 4
gpt4 key购买 nike

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com