Every day a leetcode
题目来源:面试题 08.05. 递归乘法
解法1:for循环
for循环A次,每次加B。
代码:
int multiply(int A, int B){
int ans=0;
for(int i=0;i<A;i++) ans+=B;
return ans;
}
结果:
解法2:递归
代码:
int multiply(int A, int B){
if(B>1) return A+multiply(A,B-1);
else return A;
}
结果:
解法3:优化递归
代码:
int multiply(int A, int B){
if(A==0 || B==0) return 0;
if(A>B) return A+multiply(A,B-1);
else return B+multiply(A-1,B);
}
结果: