Fibonacci序列中的每个新术语都是通过添加前两个术语生成的。从1和2开始,前10个术语将是:
1,2,3,5,8,13,21,34,55,89,......
通过考虑Fibonacci序列中的值不超过四百万的项,找到偶数项的总和。
a = [1,2]
upto = 4_000_000
while a[-2] + a[-1] < upto
a << a[-2] + a[-1]
end
sum = 0
a.each { |x| sum += x if x.even? }
puts "The result is #{sum}"
这是如何工作的?什么是a[-2]
?那有什么意思? 或 a减2 的负第二个索引?感谢您的解释。
答案 0 :(得分:3)
这是负面指数。 a[-1]
和a[-2]
是数组a
的最后两个元素。
答案 1 :(得分:3)
如果仔细观察,您会看到以下顺序:
1 1 2 3 5 8 13 21 34 55 89 144 ...
映射Fibonacci序列的公式是:
您只需要偶数数字的总和,例如:
1 2 3 5 8 13 21 34 55 89 144 ...
因此,您可以映射新公式,例如:
您将获得以下序列:
2 8 34 144 ...
代码示例(Go):
package main
import "fmt"
func fibonacci() func() int {
first, second := 0, 2
return func() int {
ret := first
first, second = second, first+(4*second)
return ret
}
}
func main() {
sum := 0
f := fibonacci()
for i := 0; sum < 4000000; i++ {
sum += f()
}
fmt.Println(sum)
}
在这种情况下,你不需要if条件。
希望对你有所帮助!干杯!
答案 2 :(得分:-1)
def fibonacci(array)
new_fibs = []
new_fibs << array[0]
new_fibs << array[1]
sum = 0
i = 0
while new_fibs.last < 4_000_000
sum = new_fibs[i] + new_fibs[i+1]
new_fibs << sum
i += 1
end
total_even = 0
new_fibs.each do |fibs|
if fibs%2 == 0
total_even = total_even + fibs
end
end
p total_even
end
fibonacci([1,2])
Fibonacci序列中的每个新术语都是通过添加前两个术语生成的。从1和2开始,前10个术语将是:
1,2,3,5,8,13,21,34,55,89,......
通过考虑Fibonacci序列中的值不超过四百万的项,找到偶数项的总和。