publicintmultiply(int A,int B){//保持A小于Bif(A > B){int T = A;
A = B;
B = T;}returndfs(A, B);}//A为小的因数publicintdfs(int A,int B){if(A ==0)return0;//为0的时候,结果为0if(A ==1)return B;//为1的时候,B本身if(A ==2)return B <<1;//B扩大一倍 *2returndfs(2, B)+dfs(A -2, B);//大于2的情况,先拆分出2 两部分加起来}
方法2:移位操作
publicintmultiply(int A,int B){//保持A小于Bif(A > B){int T = A;
A = B;
B = T;}int res =0, i =0;while(A >0){// 处理二进制if((A &1)==1){
res += B << i;}
A >>=1;
i++;}return res;}
面试题 08.05. 递归乘法递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。示例1: 输入:A = 1, B = 10 输出:10示例2: 输入:A = 3, B = 4 输出:12提示:保证乘法范围不会溢出方法1:递归public int multiply(int A, int B) { //保持A小于B if (A > B) { int T = A;