我以前发布过,但是到目前为止没有显示我的工作。

原来的问题:

斐波那契数列中的每个新项都是通过将前两个项相加而生成的。从1和2开始,前10个术语将是:

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

通过考虑斐波那契数列中值不超过四百万的项,找到偶值项的总和。

这是我在JS中的答案:

var sum = 0
fib = function(numMax){
for(i=0,j=1,k=0; k<numMax;i=j,j=x,k++ ){
    x=i+j;
    console.log(x);
    if (x%2 === 0) {
        sum += x;
    }
}
}
fib(32)
console.log(sum);


我正在尝试解决Ruby中的相同问题。以下是我到目前为止提出的内容,但是我真的很努力在这里将各个部分放在一起:

sum = 0
def fib (num_max)
sum.each do |x|
i = 0, j = 1, k = 0
if k < num_max
    i = j
    j = x
    x = i+j
    puts x
    if x % 2 == 0
        sum += x
    end
  end
end
fib(32)
puts sum

最佳答案

starting_sequence_array = [1,2]

while (starting_sequence_array[-2] + starting_sequence_array[-1]) < 4000000
    starting_sequence_array << (starting_sequence_array[-2] +  starting_sequence_array[-1])
end

puts starting_sequence_array.select{|i| i.even?}.inject(:+)

07-24 09:46
查看更多