1.实现 pow(x, n),即计算 x 的整数 n 次幂函数(即,xn )。
-100.0 < x < 100.0
-231 <= n <= 231-1
n
是一个整数- 要么
x
不为零,要么n > 0
。 -104 <= xn <= 10
快速幂(核心):n=(n/2)+(n/2)+(n%2) 其中,C++中除法只取整
class Solution {
public:
double myPow(double x, int n) {
if(n == 0)
return 1;
if(n == 1)
return x;
if(n == -1)
return 1/x;
double a = myPow(x, n/2);
double b = myPow(x, n%2);
return a*a*b;
}
};
2.递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。保证乘法范围不会溢出。
class Solution {
public:
int multiply(int A, int B) {
if(B<A){
int t =A;
A = B;
B = t;
}
if(A==0)
return 0;
return multiply(A-1,B)+B;
}
};