递归求乘方

递归求一个数的乘方代码:

仅仅是示例而已,实际应用中应该使用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的表示范围,指数并不能无限大,仅作示例,没有修复这个缺陷!

 

你可能感兴趣的:(Algorithm)