/**
* Created with IntelliJ IDEA.
* User: hajadc.tistory.com
* Date: 8/25/13
* To change this template use File | Settings | File Templates.
*/
public class Power {
private static final double BASE = 3.1;
private static final int POWER = 8;
private static int count = 0;
public static void main(String[] args) {
count = 0;
System.out.println("Operation: " + BASE + "^" + POWER);
System.out.println(" Pow1():" + Pow1(BASE, POWER));
System.out.println(" iterations:" + count);
count = 0;
System.out.println(" Pow2():" + Pow2(BASE, POWER));
System.out.println(" iterations:" + count);
} // main()
/**
* O(N) implementation of power
*
* @param base
* @param power
* @return
*/
private static double Pow1(double base, int power) {
count++;
if (power == 0) {
return 1;
} else if (power > 0) {
return base * Pow1(base, (power - 1));
} else {
return 1 / Pow1(base, -power);
}
} // Pow1()
/**
* O(log N) implementation of power
*
* @param base
* @param power
* @return
*/
private static double Pow2(double base, int power) {
count++;
if (power == 0) {
return 1;
} else if (power < 0) {
return 1 / Pow2(base, -power);
} else {
if (power % 2 == 0) { // Even power
double half = Pow2(base, (power / 2));
return half * half;
} else {
return base * Pow2(base, (power - 1));
}
}
} // Pow2()
} // class Power
Knowledge/Interview Questions
댓글