我正在编写代码以找到两个整数的最小公倍数。我首先将代码编写为 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 循环将继续运行,直到 while 条件不再被评估为 true。首先,我明白,由于我的代码目前是编写的,它会停止实际最低公倍数的一个数字。我并不担心这方面,我只是不明白为什么它根本没有运行。
我很想知道是否可以使用另一种类型的循环使其工作。使用 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 这是我的第一个问题,我已经参考了指南,但是如果您注意到我没有遵循的任何内容,我也会感谢您的反馈。