Fibonacci数字 - Ruby数组

时间:2014-07-20 01:45:32

标签: ruby

我正在努力解决问题:

Fibonacci序列中的每个新术语都是通过添加前两个术语生成的。从1和2开始,前10个术语将是:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

通过考虑Fibonacci序列中的值不超过四百万的项,找到偶数项的总和。

为了解决这个问题,我首先尝试使用make函数或方法来生成Fibonacci数的数组。然后我会从那里拿走它。

我想出了这段代码:

def fibonacci(array)
    array = []
    result = array[0] + array[1] 
    i = 2

    while result < 4_000_000
        result += array[i]

        i += 1
    end

    result

    array<< result

end

fibonacci([1,2])

我收到此错误消息:

  

(eval):18:未定义的方法`+'表示nil:NilClass(NoMethodError)来自   (EVAL):33

我做错了什么?我觉得我这样做是错的

2 个答案:

答案 0 :(得分:3)

当您查找越界索引时,Ruby不会引发异常。您的array参数将被忽略并设置为空数组,然后您将查找该数组的第一个和第二个索引。因为数组是空的,所以这两个都返回nil,并且你不能在nil上调用+。

答案 1 :(得分:0)

请注意您的第二行代码:

def fibonacci(array)

  array = []    ####  You put parameters and initialize it again

  result = array[0] + array[1] 

  ...

end

同样的问题也许可以帮到你:

Fibonacci sequence in Ruby (recursion)

您可能需要使用Ruby学习编程系统。