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