浮動小数点数のGCDを計算するために次の関数を作成しましたが、これを入力(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);
}
}
}