Я пытаюсь найти НОД двух чисел, используя алгоритм Евклида в C (рекурсивно), и я знаю, что математически он еще не совсем совершенен, поскольку игнорирует условия отрицательных чисел, но я просто хочу, чтобы этот работал для положительных чисел на данный момент.
#include <stdio.h>
int gcd(int m, int n);
int main() {
return gcd(60, 24);
}
int gcd(int m, int n) {
if (m < n) {
//swapping both a and b
m = m + n;
n = m - n;
m = m - n;
}
if (m == n) {
return m;
} else {
return gcd(n, m % n);
}
}
(m, 0)
в качестве последней итерации. В этот момент он должен вернутьm
. Вместо этого он попытается оценитьm % 0
, что, конечно же, вызовет ошибку. Измените условиеm == n
наn == 0
, чтобы исправить это. - person Tom Karzes   schedule 30.01.2016