Ruby 中的斐波那契数列(递归) [英] Fibonacci sequence in Ruby (recursion)
问题描述
我正在尝试实现以下功能,但它不断给我 堆栈级别太深 (SystemStackError)
错误.
任何想法可能是什么问题?
def fibonacci( n )[ n ] 如果 ( 0..1 ).include?n( fibonacci( n - 1 ) + fibonacci( n - 2 ) ) 如果 n >1结尾放置斐波那契( 5 )
试试这个
def fibonacci( n )如果 ( 0..1 ).include 则返回 n?n( 斐波那契( n - 1 ) + 斐波那契( n - 2 ) )结尾放置斐波那契( 5 )# =>5
也查看这篇文章Fibonacci One-Liner
以及更多 .. https:///web.archive.org/web/20120427224512/http://en.literateprograms.org/Fibonacci_numbers_(Ruby)
您现在已经被许多解决方案轰炸了:)
关于你的解决方案中的问题
如果 0
或 1
n
和add
最后两个数字不是last和next
新修改版
def fibonacci( n )如果 n <= 1,则返回 n斐波那契( n - 1 ) + 斐波那契( n - 2 )结尾放置斐波那契(10)# =>55
<块引用>
一个班轮
def fibonacci(n)n <= 1 ?n : 斐波那契( n - 1 ) + 斐波那契( n - 2 )结尾放置斐波那契(10)# =>55
I'm trying to implement the following function, but it keeps giving me the stack level too deep (SystemStackError)
error.
Any ideas what the problem might be ?
def fibonacci( n )
[ n ] if ( 0..1 ).include? n
( fibonacci( n - 1 ) + fibonacci( n - 2 ) ) if n > 1
end
puts fibonacci( 5 )
Try this
def fibonacci( n )
return n if ( 0..1 ).include? n
( fibonacci( n - 1 ) + fibonacci( n - 2 ) )
end
puts fibonacci( 5 )
# => 5
check this post too Fibonacci One-Liner
and more .. https://web.archive.org/web/20120427224512/http://en.literateprograms.org/Fibonacci_numbers_(Ruby)
You have now been bombarded with many solutions :)
regarding problem in ur solution
you should return n
if its 0
or 1
and add
last two numbers not last and 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 中的斐波那契数列(递归)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!