【发布时间】:2015-10-17 01:55:57
【问题描述】:
我正在尝试在 tryclj.com 上的 clojure 中编写一个简单的递归函数。
(defn sum-to-n [n]
(if (<= n 0) n
(+ n (sum-to-n (- n 1)))))
通过键入(sum-to-n 4) 调用函数会引发异常:
java.lang.IllegalStateException:尝试调用未绑定的 fn:#'sandbox16265/sum-to-n
看起来您甚至无法进行递归函数调用。但是,奇怪的是,即使调用不应触发递归函数调用的(sum-to-n 0),也会引发相同的异常。我做错了吗?
【问题讨论】:
-
tryclj.com 会随机清除所有定义的状态,您只需重新输入定义即可。另外,最好尽可能使用
recur(这里适用),但这与此错误无关。 -
你的函数在lein repl 中对我有用。 tryclj 可能是在试图避免恶意递归。
-
使用 tryclj.com 对我来说很好。但我知道问题所在:有时基本的东西在 tryclj.com 中似乎随机不起作用。
-
@sloth 我刚刚复制并粘贴了它,它工作了
-
@mikeyhew 我曾经遇到过我创建的地图
(def m {:foo :bar}在函数(some-function m)中不起作用的问题。我现在大部分时间只是使用本地 REPL。
标签: clojure