Я изучаю некоторые проблемы онлайн-практики, чтобы изучить Ruby, и пока я был в состоянии решить эту проблему, я изо всех сил пытаюсь понять что-то о размещении объявления переменной.Размещение объявления переменной в Ruby (новичок)
Почему следующий код работает, когда я объявляю/определяю «пару» (сумму индексов массива) внутри цикла while while, но не тогда, когда я делаю это непосредственно после объявления самих индексов?
def two_sum(nums)
idx=0
idx2=0
while idx<nums.length-1
idx2=idx+1
while idx2<nums.length
pair=nums[idx]+nums[idx2]
if pair==0
return [idx, idx2]
else
idx2+=1
end
end
idx+=1
end
end
версия выше работает, но нижеуказанная структура не работает.
def two_sum(nums)
idx=0
idx2=0
pair=nums[idx]+nums[idx2]
while idx<nums.length-1
idx2=idx+1
while idx2<nums.length
if pair==0
return [idx, idx2]
else
idx2+=1
end
end
idx+=1
end
end
Если кто-нибудь может предоставить объяснение или некоторые ресурсы начального уровня об этом, я был бы очень признателен. Благодарю.
Edit:
Извините за вопросы отступов и специфичность в отношении желаемых результатов. Я совершенно новичок в этом, и иногда детали проскальзывают, я ценю отзывы. Спасибо за поэтапное логическое прохождение, именно это я и искал.
Что вы подразумеваете под 'work'? Каковы ваши ожидаемые значения ввода/вывода? – fylooi
отредактировал ваш код, чтобы исправить отступы. во втором примере переменная 'pair' будет иметь одно и то же значение на каждой итерации' while'. В первом случае он может измениться, так как «idx2» может быть увеличен. Хорошее имя пользователя btw :) –