-3
私はeuclidsアルゴリズムを使って2つの整数のgcdを計算するGCD関数を書こうとしています。この関数では、 "else"を消去すると3が出力されますが、それは間違っています。しかし、私が "else"を使うと、正しい出力である1が出力されます。もし私が "else"を使わないとすれば、関数はまだ正しいと思います。なぜ私は2つの異なる出力を得ているのですか?ここで関数から "else"を消去すると出力が異なるのはなぜですか?
は
#include <iostream>
using namespace std;
int euclidGcd(int x , int y){
if(x%y!=0)
euclidGcd(y , x%y);
else
return y;
}
int main(){
cout<<euclidGcd(2,3)<<"\n";
return 0;
}
'if'ブランチは値を返しません。 –
'x%y == 0'のとき、関数は戻りません。これは未定義の動作です – Justin
助けてくれてありがとう.. :) –