Clojure:如何进行基本递归?
我试图在tryclj.com上用clojure编写一个简单的递归函数Clojure:如何进行基本递归?,clojure,Clojure,我试图在tryclj.com上用clojure编写一个简单的递归函数 (defn sum-to-n [n] (if (<= n 0) n (+ n (sum-to-n (- n 1))))) (定义总和到n[n] (如果( 此代码有效。请尝试查看。tryclj.com有一个“关于”链接解释此代码: 此外,如果您定义的内容太多,或在15分钟后,解释器将删除您输入的数据 如果其他东西不能按预期工作,您应该知道它使用的是一个沙箱库,它对您的操作施加了很多限制。正如评论员所说,这
(defn sum-to-n [n]
(if (<= n 0) n
(+ n (sum-to-n (- n 1)))))
(定义总和到n[n]
(如果(
此代码有效。请尝试查看。tryclj.com有一个“关于”链接解释此代码:
此外,如果您定义的内容太多,或在15分钟后,解释器将删除您输入的数据
如果其他东西不能按预期工作,您应该知道它使用的是一个沙箱库,它对您的操作施加了很多限制。正如评论员所说,这在Clojure repl或编译程序中效果很好
您还应该检查其他事项:重复执行
尾部递归以避免堆栈崩溃,dec
/inc
,pos?
,zero?
和neg?
以获得更具可读性的检查。当然,您知道此特定函数不需要递归。您可以将其编写为:
(defn sum-to-n [n]
(quot (* n (inc n)) 2))
这是一个try-clj问题,我不知道到底是什么
(定义f[]1)
‘沙盒8136/f
(f)
java.lang.IllegalStateException:尝试调用未绑定的fn:#'sandbox8136/f
tryclj.com随机清除所有定义的状态,您只需重新输入定义。此外,如果可能,最好使用recur
(此处适用),但这与此错误无关。你的函数在a中对我起作用。Trycj可能是在试图避免恶意递归。Trycj.com对我起作用很好。但我知道问题:有时基本的东西似乎随机地在Trycj.com中不起作用。@sloth我只是复制并粘贴了它,现在就成功了worked@mikeyhew我曾经有一个问题,那张地图我创建的s(def m{:foo:bar}
在函数(一些函数m)
中不起作用。我现在大部分时间只是使用本地REPL。
(defn sum-to-n [n]
(quot (* n (inc n)) 2))