// Recursive raise integer to integer power: // // If j is even, return (i^2)^(j/2), else return i * (i^2)^(j/2) // // // ---------------------------------------------------- // (c) Copyright 2003 Julian V. Noble. // // Permission is granted by the author to // // use this software for any application pro- // // vided this copyright notice is preserved. // // ---------------------------------------------------- #include #include int power( int i, int j ); // prototype int main( void ) { int a; int b; printf("What are m and n? "); scanf(" %d", &a); scanf(" %d", &b); printf( " %d\n", power(a,b) ) ; return 0; } int power( int i, int j ) { int k; if (j==0) // i^0 = 1 { return 1; } if (j & 1) // odd? k = i; else // even? k = 1; return k*power( i*i, j/2); }