思路:将两个数当作二进制数来处理,比方说6(110)+5(101)=11(1011),可以将二进制的加法过程分成两部分来处理:先不考虑进位求得两数的和(即两数按位异或),然后再将产生的和与进位结果(即两数按位与然后左移一位)相加,后面这一相加过程可以递归调用add函数来实现。
代码如下:
int add(const int a, const int b)
{
return b == 0 ? a : add(a^b, ((a&b) << 1));
}
思路:将两个数当作二进制数来处理,比方说6(110)+5(101)=11(1011),可以将二进制的加法过程分成两部分来处理:先不考虑进位求得两数的和(即两数按位异或),然后再将产生的和与进位结果(即两数按位与然后左移一位)相加,后面这一相加过程可以递归调用add函数来实现。
代码如下:
int add(const int a, const int b)
{
return b == 0 ? a : add(a^b, ((a&b) << 1));
}