这里是StackOverflow的新手。我正在研究第一个欧拉问题并遇到了一个问题,我可以通过这个问题来迭代数组。它似乎与我有while循环设置的方式有关,但我无法弄明白。
这是我的代码:
#euler problem 1
numbers = [3,5]
sum = 0
i=1
total=0
numbers.each do |number|
while i * number < 10
adder = i * number
total += adder
i += 1
puts total
end
end
puts total
输出为3 9 18 18
知道为什么它不处理数组中的5?
答案 0 :(得分:4)
您的问题是i
在块外宣布,因此当number
为5时,i
已经为4,而while
循环的条件会立即失败,因为{{1}是假的。试试这样:
20 < 10
如果你在代码中放了一点numbers = [3,5]
sum = 0
total=0
numbers.each do |number|
i = 1
while i * number < 10
#...
end
end
puts total
,你会看到发生了什么:
puts
这将为您提供此输出:
i = 1
numbers.each do |number|
puts "#{number}\ti = #{i}"
while i * number < 10
puts "\ti = #{i}"
adder = i * number
total += adder
i += 1
end
end
您将看到3 i = 1
i = 1
i = 2
i = 3
5 i = 4
的问题。