質問: 0) { return y; } else { return gojoho(x, y); } } int main(void) { int a, b; printf("割る数:"); scanf("%d", &a); printf("割られる数:"); scanf("%d", &b); gojoho(a,b); printf("最大公約数は%dです\n", b); return 0; } **試したこと** 単に引数を足してみたり、ほかの再帰のプラグラムを見て構文を理解しようとしたりしました。 **付け足し** c言語で作成中です。 詳しく返答いただけるととても助かります。どうか返答よろしくお願いします。
回答: こんにちは。 手元のVC++ 2015とMinGW 5.2.0でやってみましたが、コンパイル・エラーでませんよ。 コンパイル・エラーが出るソースを提示下さい。 後、質問欄の上の方にある、「B I A ◯ □ '' `>`」の最後の`>`を押すと`'''`のようなものが2つ表示されますので、その間にソースをコピペして下さい。詳しくはヘルプを読んで下さい。 【追記】 走らせてみました。 まず、ユークリッドの互除法通りに実装しましょう。if (x / y == 0)ではユークリッドの互除法になりません。 剰余が0にならなかった時にreturn gojoho(x, y);とできるよう変数を置き換えるのはよろしくないです。置き換えることで混乱しています。gojoho(y, 剰余);とすれば良いので下手に置き換えない方が簡単です。 最後に結果をうけとってないようです。main()内のbは「割られる数」が入ったままですので、printf()しても割られる数のままですよ。