これが非常に些細な問題であることは理解しています。
ユーザーが 0 を入力するまで int としてユーザー入力を要求し続けるプログラムを作成しようとしています。その時点で終了し、すべての数字が逆に出力されます。これは私がこれまでに持っているものです:
int revList(int num)
{
if (num != 0)
{
scanf("%d", &num);
printf("%d\n", revList(num));
return num;
}
return 0;
}
私の主な方法は次のとおりです。
int revList(int);
printf("%d", revList(1));
の 1 はrevList
、最初の反復では役に立たないにもかかわらず、コンパイラの引数の必要性を満たすために任意に選択されました。
私のコードはおそらく非効率的であり、再帰を適切に利用していないことを理解しています。
コードは機能しますが、問題が 1 つあります。0 を 2 回出力してから、前の数字を出力します。問題の原因がどこにあるのかを理解しています。最後に戻り値0があるためですが、非void関数の最後に到達し、このように0を2回返すため、それを取り出すことができません。
誰かがこれを修正するのを手伝ってくれて、この問題に対処する効率的な方法を教えてくれませんか?
編集: 例: ユーザー入力: 1 2 3 4 5 8 0
出力する必要があります:
0 8 5 4 3 2 1
私のプログラムは次のように出力します: 0 0 8 5 4 3 2 1