LeetCode面试题08.05.递归乘法
作者:互联网
题目
题目链接:https://leetcode-cn.com/problems/recursive-mulitply-lcci/
思路分析:
乘法实质就是多个相同的数相加,例如:3x4 等价于 3+3+3+3(4个3相加)即x*y的话,就是y个x相加
函数代码如下:
int Mul(int x, int y) {
int result = 0;
if (y > 1) {
result = Mul(x, y-1)+ x ;
}
else {
result = x;
}
return result;
}
在此优化了一下,刚刚正整数的函数部分已经写好了,那么再考虑负整数的话,可将这个情况转成刚才的求正数的情况再来计算。因此,可以添加r函数来对y的值进行讨论。
具体代码实现如下:
int Mulhelper(int x, int y) {
int result = 0;
if (y > 1) {
result = Mulhelper(x, y-1)+ x ;
}
else {
result = x;
}
return result;
}
int Mul(int x, int y) {
if (y == 0) {
return 0;
}
if (y > 0) {
return Mulhelper(x, y);
}
else {
return -Mulhelper(x, -y);
}
}
此处注意:y<0的情况,转换为整数进行计算,所以返回值要加负号 “-”
标签:面试题,return,08.05,int,else,result,Mulhelper,Mul,LeetCode 来源: https://blog.csdn.net/m0_47988201/article/details/116035098