其他分享
首页 > 其他分享> > LeetCode面试题08.05.递归乘法

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