[剑指offer] 48. 不用加减乘除做加法
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路:
或运算模拟 当前位数加减
与运算模拟 进位
递归,当右加数(进位)为0时,停止递归,直接返回左加数(当前和)。
class Solution { public: int Add(int num1, int num2) { if (num2 == 0) { return num1; } int s = num1 ^ num2; int c = (num1 & num2) << 1; return Add(s, c); } };
class Solution
{
public:
int Add(int num1, int num2)
{
if (num2 == 0)
{
return num1;
}
int s = num1 ^ num2;
int c = (num1 & num2) << 1;
return Add(s, c);
}
};