Ruby 中的斐波那契数列(递归) [英] Fibonacci sequence in Ruby (recursion)

查看:32
本文介绍了Ruby 中的斐波那契数列(递归)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试实现以下功能,但它不断给我 堆栈级别太深 (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)

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

关于你的解决方案中的问题

如果 01

你应该返回 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆