/**************************/ /* 2のべき乗を計算する */ /* (関数の再帰呼び出し) */ /* (グローバル変数使用) */ /**************************/ #include #include void beki2(void); // 2倍を繰り返す int i; // 乗数カウンタ long m; // 2のn乗 void main( ) /*----------------*/ /* 主プログラム */ /*----------------*/ { char c[128]; int n; // 乗数n printf("\n\n\n★2のべき乗(整数)★\n"); printf("\n何乗しますか: "); fflush(stdout); gets(c); n=atoi(c); // キーボードから入力 m=1; i=n; // 初期値 beki2( ); // 2倍を繰り返す printf("\n\n【結果】2 の %d 乗は %ld です\n\n",n,m); } void beki2( ) /*------------------*/ /* 2倍を繰り返す */ /*------------------*/ { printf("\nm=%d",m); // 途中経過表示 if ( i>=1 ) // iの値が1以上のとき { m*=2; i--; beki2( ); // 2倍を繰り返す } }