1.A+B问题
题目要求不给使用正常的四则运算,可以使用位运算。而A与B的二进制位的加运算其实就是异或运算"^"。但是考虑到每位可能有进位,所以还需要将A与B的位数都为1的和进位,通过a&b<<1可以实现。最后再通过递归将该进位的数与没有进位的数递归进行运算即可(因为可能加完进位后还有新的进位,所以仍要递归判断)。停止条件是当表示进位的数全为0,即没有进位的时候就可以停止递归,返回最终结果。
class Solution {
public:
/*
* @param : An integer
* @param : An integer
* @return: The sum of a and b
*/
int aplusb(int a, int b) {
// write your code here
if(b == 0)
return a;
return aplusb(a^b, (a&b)<<1);
}
};
作者:YunLambert
-------------------------------------------
个性签名:一名会音乐、爱健身的不合格程序员
可以Follow博主的Github哦(っ•̀ω•́)っ✎⁾⁾