While循环与循环执行

泰勒·瓦斯顿

我正在研究寻找两个整数的最低公倍数的代码。我首先将代码编写为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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章