作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试实现以下功能,但它一直给我 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 )
最佳答案
试试这个
def fibonacci( n )
return n if ( 0..1 ).include? n
( fibonacci( n - 1 ) + fibonacci( n - 2 ) )
end
puts fibonacci( 5 )
# => 5
也检查这篇文章 Fibonacci One-Liner
还有更多.. https://web.archive.org/web/20120427224512/http://en.literateprograms.org/Fibonacci_numbers_(Ruby)
你现在已经被许多解决方案轰炸了:)
关于你的解决方案中的问题
如果它是 0
或 1
,你应该返回 n
and add
最后两个数字不是 last 和 next
New Modified version
def fibonacci( n )
return n if n <= 1
fibonacci( n - 1 ) + fibonacci( n - 2 )
end
puts fibonacci( 10 )
# => 55
One liner
def fibonacci(n)
n <= 1 ? n : fibonacci( n - 1 ) + fibonacci( n - 2 )
end
puts fibonacci( 10 )
# => 55
关于ruby - Ruby 中的斐波那契数列(递归),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12178642/
我是一名优秀的程序员,十分优秀!