我正在研究寻找两个整数的最低公倍数的代码。我首先将代码编写为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,这是我的第一个问题,我已经参考了指南,但是如果您发现我没有遵循的指南,我也将非常感谢您的反馈。
while循环不会运行0 % 4 == 0
(因为和一样0 % 6 == 0
),因此第一个条件返回false
并且永远不会执行该循环。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句