思路

没有了四则运算符,还有位运算,也是可以搞一搞的。

以5+5为例,换算成二进制就是101+101。我们在平时进行十进制运算的时候,总是进行两个步骤,第一步不运算进位的情况,第二步运算进位。

那么看看第一步不运算进位,得到的结果就是000;

第二步考虑进位得到的结果就是1010。

回过头去看第一步的运算结果就是按位异或,第二步运算就是按位与,然后左移1位。

接下来就是把两步的结果加起来就可以了,但是不能用加法运算,于是就要递归了。

C++代码

class Solution {
public:
    int Add(int num1, int num2) {
        int a, b;
        while (num2)
        {
            a = num1 ^ num2;
            b = (num1 & num2) << 1;
            num1 = a;
            num2 = b;
        }
        return num1;
    }
};