Я пытался помочь другу с проблемой, он спросил меня, как он может сделать GCD из 3 чисел, используя метод Никомаха. Все прошло отлично, пока я не попытался войти в это состояние:
while (a!=b && b!=c && a!=c)
Но проблема в том, что он будет выполнен только один раз. Я изменил это в это:
while (a!=b && b!=c)
Я знаю, что это приводит к тому же самому, но мне было просто интересно, почему первый не может работать? Я не могу добавить 2 &&
в таком же состоянии?
Ты конечно Можно есть 2 &&
в том же состоянии — вы можете иметь столько, сколько хотите. Тот факт, что цикл останавливается, зависит от чего-то другого.
Кстати, если у вас было а = 10, б = 20, с = 10, первое условие (while (a!=b && b!=c && a!=c)
) остановится (потому что a != c
было бы ложным), но второй (while (a!=b && b!=c)
) продолжу. Вероятно, это то, что случилось.
Преобразование 3 условий в 2 можно выполнить в противоположном случае, то есть, если вы хотите убедиться, что все они равны: a ==b && b == c
автоматически подразумевает, что a == c
(увидеть Транзитивное отношение равенства), так что добавление этого третьего условия или нет не имеет никакого значения. Но это не относится к неравенству, как я показал.