Problem:
不用+-将两个数相加。
Solution:
两个数相加,可以当做不进位的数加上进位的数。
a^b得到了不算进位时的结果。
(a&b)<<1 得到了应该进的位。
class Solution {
public:
int getSum(int a, int b) {
return (b==0) ? a : getSum(a^b, (a&b)<<1);
}
};
Problem:
不用+-将两个数相加。
Solution:
两个数相加,可以当做不进位的数加上进位的数。
a^b得到了不算进位时的结果。
(a&b)<<1 得到了应该进的位。
class Solution {
public:
int getSum(int a, int b) {
return (b==0) ? a : getSum(a^b, (a&b)<<1);
}
};