为什么这个算法不能产生低于100的斐波那契数列?

时间:2014-02-17 04:03:11

标签: ruby

a = 1; b = 2
fibonacci = []
while fibonacci.length < 100
    fibonacci.push(a)
    fibonacci.push(b)
    a = a + b; b = a + b
end

push fibonacci

错误消息是“未定义方法`push”for main:Obj“

2 个答案:

答案 0 :(得分:1)

你正试图在最后一行#push数组本身! :)

这就是它的抱怨。正在“主”对象上调用push方法,而push不是Kernel方法。

我猜你的意思是puts。否则它看起来没问题,如果有点非惯用。当然,您可以在网站上找到许多可以解决这个问题的Ruby解决方案(请参阅here for a recursive one。)

答案 1 :(得分:1)

正如其他人所说,在最后一行之前应该是'put' 你的号码也错了。

a = 1; b = 1
fibonacci = []
while fibonacci.length < 100
  fibonacci << a
  fibonacci << b
  a += b
  b += a
end

puts fibonacci

但是,fib也从1开始,第二个元素也是1。 如果从1,2开始,这会让你顺序关闭

Fib = 1,1,2,3,5,8 ......