原题链接:Sum of Two Integers
分析:实现加号运算符,采用的是位操作,分三步:
第一步a^b得到一个值res
第二步(a&b)<<1得到一个值表示进位
第三步,如果有进位表示res还需要加上进位的值,否则res就是最终结果,注意res加上进位值也有可能有进位,所以递归getSum()操作。
题解:
class Solution {
public:
int getSum(int a, int b) {
/*
Time Complexity:O(1)
Space Complexity:O(1)
*/
int res=a^b;
int tmp=(a&b)<<1;
if(tmp!=0)return getSum(res,tmp);
return res;
}
};