我写了以下函数来计算浮点数的最大公约数,但当我使用输入(111.6, 46.5)运行时,函数中fmod(a,b)的计算在递归调用2次后开始给出错误结果。我无法找到错误所在。有人能发现这里出了什么问题吗?
float gcd(float a, float b){
if (a>b) {
if(b==0){
return a;
}
else {
return gcd(b, fmod(a,b));
}
}
else {
if (a==0) {
return b;
}
else {
return gcd(fmod(b,a), a);
}
}
}