标签:
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; }
标签:
原文地址:http://www.cnblogs.com/amethystltt/p/4419010.html