rubyrecursionfibonacci

Fibonacci sequence in Ruby (recursion)


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 )

Solution

  • 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