递归求一个数的乘方代码:
仅仅是示例而已,实际应用中应该使用Java类库方法。
/**
* calculate power of a number recursively.
* @author Sun Kui
*/
public class Power {
private static int count = 1;
public static void main(String... args) {
if (args.length < 2) {
System.out.println("usage: java Power base exponent");
return;
}
int base = Integer.parseInt(args[0]);
int exponent = Integer.parseInt(args[1]);
Power p = new Power();
System.out.println(p.power(base, exponent));
}
public long power(long x, long y) {
if (y == 1) {
return x * count;
} else {
long tempX = x * x;
long tempY = y >> 1;
// if y is odd
if ((y & 0x01) == 1) {
count *= x;
}
return power(tempX, tempY);
}
}
}
限于long的表示范围,指数并不能无限大,仅作示例,没有修复这个缺陷!