Давайте разберем это на части:
while (a && b) {
}
это означает, что в то время как a
и b
являются "truthy" значения (в данном случае, не 0
), то цикл будет продолжаться:
a > b ? a %= b : b %= a;
это тройная оператор: x ? y : z
если x
оценивает true, выполните y
. если x
оценивает значение false, выполните z
.
Таким образом, в этом случае, если a > b
верно,
a %= b
будет работать. a %= b
является сокращением на a = a % b
.
если a > b
ложно,
b %= a
будет работать. снова, b %= a
является сокращением на b = b % a
.
Таким образом, цикл будет держать работаем до любого a
или b
равно 0.
Где вы столкнулись с этим заявлением? –
простой английский: в то время как a и b являются приблизительно эквивалентными, если a> b, a = a mod b, в противном случае b = b mod a. – chiliNUT
Спасибо, chiliNUT. Обычный английский работает для меня! Эй, Кевин, я думаю, что получил этот фрагмент с этого сайта как часть решения для вычисления суммы самых низких общих кратных чисел. –