LeetCode-Pow(x, n)
Q: Implement pow(x, n).
Note:
1. n = int.MinValue, Math.Abs(n) will overflow.
For iterative, need to multiply x at the beginning, x value changes.
2. n = 3, make sure result is correct.
Recursive:
public double Pow(double x, int n) { if(n == 0) { return 1; } int t = Math.Abs(n / 2); double result = Pow(x, t); if(n % 2 == 0) { result = result * result; } else { result = result * result * x; } return n > 0 ? result : 1/result; }
Iterative:
public double Pow(double x, int n) { if (n == 0) { return 1; } double result = 1; int t = n != int.MinValue ? Math.Abs(n) : Math.Abs(n + 1); if (n == int.MinValue) { result *= x; } while (t > 0) { if (t % 2 == 0) { x *= x; t /= 2; } else { result *= x; t--; } } return n > 0 ? result : 1 / result; }
posted on 2015-04-12 07:40 amethystltt 阅读(141) 评论(0) 收藏 举报
浙公网安备 33010602011771号