我正在尝试使用project euler系列问题来提高我的ruby技能,我想知道为什么这段代码不适用于这个问题:“即使是fibonacci数,问题2”
Fibonacci序列中的每个新项都是通过添加前两个项生成的从1和2开始,前10个术语将是:

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

通过考虑Fibonacci序列中值不超过400万的项,求出偶数项的和。
我的代码:
def fibo(n)
  first, second, sequence = 0,1,[]
  for e in n
    first, second = second, first + second
    sequence << e if e%2 == 0
  end
  sequence.inject(:+)
end

puts fibo(4000000)

任何帮助都将不胜感激!

最佳答案

行中:

for e in n

4000000被替换为n,所以你说:
for e in 4000000

这不是有效的语句-不能对整数进行迭代。
如果要遍历从0到n的所有值,请尝试:
for e in (0..n)

这将迭代0到n范围内的值。
然而,还有一个更深层次的问题看起来你想迭代到4000000的值,但是你的代码会迭代前4000000个斐波那契数,这比你想要的要多得多。你可以考虑说:
while second <= 4000000

关于ruby - 如何在Ruby中正确使用for循环?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19172515/

10-13 04:08