public class Pow { /** * è¿éé¢è¦æ³¨æçæå ç¹ï¼ * 1. n为0çæ åµ * 2. nä¸ºè´æ°çæ åµï¼è¦ç»nå为æ£ï¼åæ¶xåå * 3. nç±è´åæ£å¯è½ä¼æº¢åºï¼æä»¥è¦æ¹ælong */ public double myPow(double x, int n) { return helper(x, n); } private double helper(double x, long n) { if (n == 0) { return 1; } if (n < 0) { return helper(1 / x, -n); } double y = helper(x, n / 2); if (n % 2 == 0) { return y * y; } else { return y * y * x; } } }