A+B問題
描述
給出兩個整數a和b, 求他們的和, 但不能使用 + 等數學運算符。
說明
a和b都是 32位 整數,可以使用位運算
樣例
輸入1和2,輸出爲3
實現
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(a==0){
return b;
}
if(b==0){
return a;
}
//a異或b得到不用進位的位
int c = a^b;
//a與b得到需要進位的位,進1位後再加上c就是所求結果,此時迭代就行
int d = (a&b)<<1;
return aplusb(c,d);
}
};