2 つの整数の最小公倍数を見つけるコードに取り組んでいます。最初にコードを while ループとして書きましたが、コマンド ラインに値が返されませんでした。while ループは次のとおりです。
def find_common_multiple(x, y)
z = 0
while z % x != 0 && z % y != 0 do
puts z
z += 1
end
end
find_common_multiple(4, 6)
=>nil
私が理解しているように、while条件がtrueと評価されなくなるまで、whileループは実行され続けます。まず、私のコードが現在書かれているので、実際の最小公倍数よりも 1 つの数が少ないことを理解しています。私はその側面について心配していません。なぜそれがまったく実行されていないのか理解できません。
別の種類のループを使用して動作させることができるかどうかを知りたいと思っていました。loop-do を使用して問題を解決できました。そのコードは次のとおりです。
def find_common_multiple(x, y)
z = 0
loop do
z += 1
if z % x === 0 && z % y === 0
puts z
else
nil
end
break if z % x === 0 && z % y === 0
end
end
find_common_multiple(4, 6)
12
=>nil
while ループは実行されないのに loop-do は実行される理由がわかりません。while ループの構文が間違っていますか、それとも動作の基本原理を理解していませんか? この件に関する明確な説明をいただければ幸いです。ありがとうございました!
psこれは私の最初の質問であり、ガイドラインを参照しましたが、私が従っていないことに気付いた場合は、そのフィードバックもいただければ幸いです。