我几个小时前开始使用 clojure 并试图让斐波那契函数正常工作
这是我正在定义的函数
(defn fib [x]
(if (or (= x 1) (= x 2))
((inc 0))
((+ (fib (- x 1)) (fib (- x 2))))
))
我收到此错误:java.lang.Long cannot be cast to clojure.lang.IFn user/fib (NO_SOURCE_FILE:3)
虽然我不熟悉几乎所有的语言结构,但据我所知这似乎是正确的。知道出了什么问题吗?
最佳答案
你犯了太多括号的经典错误,在 Lisps 中,括号的意思是“应用这个函数”所以只把它们放在函数周围很重要:
(defn fib [x]
(if (or (= x 1) (= x 2))
1
(+ (fib (- x 1))
(fib (- x 2)))))
您的错误本质上意味着“嘿,您刚刚尝试申请一个号码!”所以我们需要删除多余的括号。
关于functional-programming - - Clojure - 当我运行这个斐波那契函数时出现错误,知道哪里出了问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20633810/