У меня есть решение, но не единственное, что я хочу. Вот код:Программа Freeze: добавление элементов массива
def sum(nums)
idx = 0
while idx < nums.length
nums[idx] = idx * nums[idx]
idx += 1
end
print nums
idx2 = 0
idx3 = idx2 + 1
while idx3 < nums.length
result = (nums[idx2].to_i) + (nums[idx3].to_i)
idx2 += 1
end
puts result
end
sum([2,3])
sum([2,3,5])
sum([2,3,5,2])
Две вещи, которые я не понимаю, происходят на втором while
цикле. Во-первых, если я использую while idx2 < nums.length
, я получаю необычное дополнение (суммы массивов возвращаются как 6, 13, 9). Если я использую while idx3 < nums.length
, программа не будет работать полностью. Он останавливается на линии 14 (во втором цикле), где я должен перевести его на Ctrl+C
.
Я уверен, что я просто не понимаю, что здесь происходит, поэтому я прошу о помощи.
Я также понимаю, что я могу использовать inject
и each
петли для более простого решения суммы (и карта и проки/блоки и другие объекты). Я пытаюсь понять, как это работает, а не просто придумать решение.
Это помогает сказать, что ваша программа предназначена для выполнения, и дать примеры входов и соответствующих выходов, которые вы хотите ... –