0%

面试题 08.05. 递归乘法

面试题 08.05. 递归乘法

又是一个我很菜的见证

迭代

二进制乘法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
int multiply(int A, int B) {
long ret = 0;
while(B)
{
if(B & 1)
ret += A;
A <<= 1;
B >>= 1;
}
return ret;
}
};
递归
1
2
3
4
5
6
7
8
9
10
class Solution {
public:
int multiply(int A, int B) {
if(!B)
return 0;
long ret = B & 1 ? A : 0;
ret += multiply(A << 1, B >> 1);
return ret;
}
};