一般计算x^n次方是实现n次循环 long power(long x,int n) { int i; long tmp; for(i=0;in;i) tmp=tmp*x; ret rn tmp; } 这个时候是x乘了n次,为了减少乘法计算次数 可以将x^n = (x^2)^(n2) 当n为偶数 x^n = (x^2)^(n2)*x 当n为奇数 于是可以得到 long power(long x,int n) { if(n == 0) ret rn 1; else if(n == 1) ret rn x; if(n%2 == 0) ret rn power(x*x,n2); else ret rn power(x*x,n2)*x; } 这个伪递归可以改写成迭代 long power(long x,int n) { long tmp = 1; while(n=0) { if(n == 0) ret rn tmp; else if(n == 1) ret rn tmp*x; if(n%2 == 0) { x = x*x; n = n2; } else { tmp = tmp*x; x = x*x; n = n2;