我以前发布过,但是到目前为止没有显示我的工作。
原来的问题:
斐波那契数列中的每个新项都是通过将前两个项相加而生成的。从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(:+)