不用加减乘除做假发-递归解法
不用加减乘除做加法
http://www.nowcoder.com/questionTerminal/59ac416b4b944300b617d4f7f111b215
计算两个数的和,本质其实就是求解 无进位和 与 进位 的两部分的和。
而高赞对于无进位和与进位已经提供了详细的求解方法,因此这两部分的求解在这里就略去了。在这里我们提供了本题的递归解法,相比循环解法更加简单清晰。
注意:当进位为0时,递归结束,返回无进位和即可。
代码如下:
class Solution {
public:
int Add(int num1, int num2)
{
if(num2==0)
return num1;
return Add(num1^num2,(num1&num2)<<1);//在这里第一个参数我们用来计算无进位和,第二个参数用来计算进位
}
};