我正在努力解决问题:
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
我做错了什么?我觉得我这样做是错的
答案 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学习编程系统。