最近看到這樣的一個題目求X的N次方,自己想了一些解決辦法,記錄一下留作日後參考。
求X的N次方,首先暴力求解:
int exp(int x, int n) { int ret = 1; for(int i = 0; i < n; i++) { ret *= x; } return ret; }
int exp(int x, int n) { int ret = 1; if(n == 0) return ret; int k = n; while(k != 0) { if((k & 0x1) != 0) ret *= x; x *= x; k >>= 1; } return ret; }
int exp(int x, int n) { if(n == 0) return 1; if(n == 1) { return x; } else { int s; int m = n / 2; s = exp(x, m); if(m % 2 == 0) { return s * s; } else { return s * s * x; } } }