加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 22:23:35 所属栏目:百科 来源:网络整理
导读:我试图实现以下功能,但它不断给我堆栈级别太深(SystemStackError)错误. 任何想法可能是什么问题? def fibonacci( n ) [ n ] if ( 0..1 ).include? n ( fibonacci( n - 1 ) + fibonacci( n - 2 ) ) if n 1endputs fibonacci( 5 ) 解决方法 尝试这个 def fibo
我试图实现以下功能,但它不断给我堆栈级别太深(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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读