题目描述:
递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。
示例1:
输入:A = 1, B = 10
输出:10
示例2:
输入:A = 3, B = 4
输出:12
标签: 递归
题目链接:递归乘法
Java题解:
题解1:投机取巧法
乘法的本质上是累加,将乘法转化为加法
public class RecursionMutiply {
public static int multiply(int A, int B) {
if(A==0 || B==0){
return 0;
}
if (B > 0) {
return A + multiply(A, B - 1);
}
//B小于0,将B的负号转化到A身上
return -(A+multiply(A,-B-1));
}
public static void main(String[] args) {
System.out.println(multiply(3,4));
System.out.println(multiply(3,-4)