【发布时间】:2012-01-30 01:53:45
【问题描述】:
我是 Clojure 的新手,我认为到目前为止我编写代码的方法不符合“Clojure 之道”。至少,我一直在编写函数,这些函数不断导致大值的 StackOverflow 错误。我已经了解了如何使用 recur,这是向前迈出的一大步。但是,如何使像下面这样的函数适用于像 2500000 这样的值?
(defn fib [i]
(if (>= 2 i)
1
(+ (fib (dec i))
(fib (- i 2)))))
在我看来,该函数是斐波那契生成器的“简单”实现。我已经看到了其他更优化的实现,但在它们的作用方面不太明显。 IE。当您阅读函数定义时,您不会“哦,斐波那契”。
任何指针将不胜感激!
【问题讨论】:
标签: recursion clojure fibonacci