Jer*_*oko 0 lisp functional-programming clojure
我几个小时前拿起了clojure,我正试图让Fibonacci功能正常工作
这是我正在定义的功能
(defn fib [x]
(if (or (= x 1) (= x 2))
((inc 0))
((+ (fib (- x 1)) (fib (- x 2))))
))
Run Code Online (Sandbox Code Playgroud)
我收到此错误: java.lang.Long cannot be cast to clojure.lang.IFn user/fib (NO_SOURCE_FILE:3)
虽然我对几乎所有语言结构都不熟悉,但就我所知,这似乎是正确的.知道什么是错的吗?
你已经犯了太多parens的经典错误,在Lisps中,parens意味着"应用这个函数"所以重要的是只将它们放在函数周围:
(defn fib [x]
(if (or (= x 1) (= x 2))
1
(+ (fib (- x 1))
(fib (- x 2)))))
Run Code Online (Sandbox Code Playgroud)
你的错误实质上意味着"嘿,你刚试过申请号码!" 所以我们需要删除冗余的parens.
| 归档时间: |
|
| 查看次数: |
34 次 |
| 最近记录: |