Ruby中的斐波纳契序列(递归)

前端之家收集整理的这篇文章主要介绍了Ruby中的斐波纳契序列(递归)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图实现以下功能,但它不断给我堆栈级别太深(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

更多.. http://en.literateprograms.org/Fibonacci_numbers_(Ruby)

你现在已经被许多解决方案轰炸了:)

关于问题在解决方

你应该返回n,如果它的0或1

添加最后两个数字不是最后和下一个

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相关文章