相关疑难解决方法(0)

Ruby中的Fibonacci序列(递归)

我正在尝试实现以下功能,但它一直给我stack level too deep (SystemStackError)错误.

任何想法可能是什么问题?

def fibonacci( n )
    [ n ] if ( 0..1 ).include? n
    ( fibonacci( n - 1 ) + fibonacci( n - 2 ) ) if n > 1
end

puts fibonacci( 5 )
Run Code Online (Sandbox Code Playgroud)

ruby recursion fibonacci

14
推荐指数
7
解决办法
6万
查看次数

是否有可能在Lisp中递归生成40,000+个Fibonacci元素?

我正试图用Lisp 解决Project Euler问题2.这个递归解决方案在执行时打击堆栈,但我认为Lisp(使用clisp)会识别尾递归.这正在进入顶级.

(defun e2-problem (&optional (f1 1) (f2 1) (sum 0))  
   "Sum fibonacci sequence, even terms up to 4 million"

   (if (> f2 4000000) sum)
   (e2-problem f2 (+ f1 f2) (if (evenp f2) 
                                (+ sum f2) 
                               sum))
Run Code Online (Sandbox Code Playgroud)

我的实现没有正确安排优化吗?我想如果我不能依赖惯用的递归,这会妨碍我的Lisp教育.

lisp recursion common-lisp fibonacci

2
推荐指数
1
解决办法
860
查看次数

标签 统计

fibonacci ×2

recursion ×2

common-lisp ×1

lisp ×1

ruby ×1