给出两个整数 a 和 b , 求他们的和
1.题目
给出两个整数a和b,求他们的和。
2.思考
a+b,我们不管使用什么语言a+b都是很容易实现的比如常见的java,该算法可以直接 return (a + b);该算法已经完成。如此简单肯定不是只有这样的,
3.代码实现:
1.非递归实现
public int aplusb(int a, int b) {
int carrySum, originalSum;
//a ^ b 是不进位的原位和
//a & b 产生进位的地方
//a & b << 1 是进位和
//当进位和等于0时,原位和就是a+b的和
//如果进位和不等于0时,a = 原味和,b = 进位和,继续按照如上
//方式进行计算,直到进位和为0
while (b != 0){
carrySum = a ^ b;
originalSum = (a & b) << 1;
a = carrySum;
b = originalSum;
}
return a;
}
2.递归实现
public int aplusb(int a, int b) {
//递归实现
if (b == 0){
return a;
}