如何在Ruby中正确使用for循环?
我正在尝试使用ProjectEuler系列问题来提高我的Ruby技能,我想知道为什么这段代码不适用于这个问题:“即使是斐波那契数,问题2” 斐波那契序列中的每个新项都是通过将前两项相加生成的。从1和2开始,前10个术语将是:如何在Ruby中正确使用for循环?,ruby,loops,for-loop,project,Ruby,Loops,For Loop,Project,我正在尝试使用ProjectEuler系列问题来提高我的Ruby技能,我想知道为什么这段代码不适用于这个问题:“即使是斐波那契数,问题2” 斐波那契序列中的每个新项都是通过将前两项相加生成的。从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 i
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)
def fibo(n)
第一,第二,顺序=0,1,[]
对于e in n
第一,第二=第二,第一+第二
sequence我建议你先看看是否从Ruby开始。这是一种适应语言方式的有趣方式
也就是说,您的代码没有正确计算斐波那契数,它没有对斐波那契数求和,并且还有一些其他错误(for e in n
无效,因为n
不是枚举数类型)。像这样修复它:
def fibo(n)
first, second, sum = 0, 1, 0
loop do
first, second = second, first + second
sum += second if second%2 == 0
break if second >= n
end
sum
end
如果你是从Ruby开始,我建议你去看看。这是一种适应语言方式的有趣方式
也就是说,您的代码没有正确计算斐波那契数,它没有对斐波那契数求和,并且还有一些其他错误(for e in n
无效,因为n
不是枚举数类型)。像这样修复它:
def fibo(n)
first, second, sum = 0, 1, 0
loop do
first, second = second, first + second
sum += second if second%2 == 0
break if second >= n
end
sum
end
行中:
for e in n
4000000正被n取代,所以你说:
for e in 4000000
这不是有效的语句-不能对整数进行迭代
如果要遍历从0到n的所有值,请尝试:
for e in (0..n)
这将遍历范围0到n中的值
然而,这里有一个更深层次的问题。看起来好像您希望迭代到4000000,但是相反,您的代码将迭代前4000000个斐波那契数,这远远超出您的需要。你可能会想说:
while second <= 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
while second感谢您的建议!谢谢你的建议!