4
int reverse(int);
void main()
{
     int no =5;
     reverse(no);
}

int reverse(int no)
{

 if(no == 0)
      return 0;
else 
 printf("%d",no);

reverse(no--);
}

このプログラムは無限ループに陥ります。目的の出力を取得できません。望ましい出力は 5 4 3 2 1. よろしくお願いします

4

6 に答える 6

3

でポストデクリメント演算子を使用していますno。これは最初に の値を取得し、それno式の値として使用してから減分します(減分されていない値を式の値として引き続き使用します)。おそらく、または だけを使用したいでしょう。(前者は を変更しますが、後者は変更しませんが、それ以降は が参照されないため問題ありません。)no--nono - 1nono

于 2013-06-25T03:28:52.300 に答える