递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。
示例1:
输入:A = 1, B = 10
输出:10
示例2:
输入:A = 3, B = 4
输出:12
提示:
保证乘法范围不会溢出
思路:由于不能使用乘法,A*B相当于 A + A总共加了B次,题目中不用考虑负数的问题,可以直接减就行,如果是相加次数太多,需要交换A和B的位置,这样避免栈溢出。代码如下:
class Solution {
public int multiply(int A, int B) {
if(B == 0 || A == 0){
return 0;
}
if(A < B) return multiply(B, A);
return A + multiply(A , B-1);
}
}