Объясните, что выполняет данная строка в функции НОК - C (СИ)
Формулировка задачи:
Мне в программе нужно было найти НОК заданных чисел. Нашел функцию подсчета для вычисления НОК(алгоритм Евклида) . Вот в ней такая строчка : long int nod (int x, int y) { return (x?nod(y%x,x):y); } . Можете описать действия после слова "return" . Я прочитал и узнал что это тернарная операция, на подобии if ... else , но не могу понять как выполняется это выражение. Спасибо заранее за помощь.
Решение задачи: «Объясните, что выполняет данная строка в функции НОК»
textual
Листинг программы
if (x!=0) return nod(y%x,x); else return y;
Объяснение кода листинга программы
x- это входное значение, которое не равно нулю.nod(y%x,x)- это вызов функцииnodс аргументамиy%xиx.y%x- это операция модуля, которая возвращает остаток от деленияyнаx.x- это значение, которое передается в функциюnodв качестве второго аргумента.- Функция
nodне определена в данном контексте, поэтому ее поведение неизвестно. - Если
xравно нулю, то выполняется альтернативный блок кода. y- это входное значение, которое возвращается из функции в случае, еслиxравно нулю.- Возвращаемое значение функции будет
y, еслиxне равно нулю, илиnod(y%x,x), еслиxравно нулю.