问题描述:
给出两个整数 a 和 b , 求他们的和。(不使用+等算数运算符)
思路
关键点:不考虑进位的求和 x^y;进位 x&y
步骤:
- 通过对x和y进行&位运算,得出每一位上的进位。
- 对x和y进行^位运算,得出没有加进位的和。
3.将所得的和当做新的x,所得的进位往左移一位(第零位的进位输入为0)当做新的y,继续做上面的步骤,直到进位为0。
此时x中保存的就是x和y的和了。
递归的条件就是x=0或y=0
代码
public int plus(int a,int b){
if(a==0)
return b;
if(b==0)
return a;
int a1 =a^b;
int b1= (a&b)<<1;
return plus(a1,b1);
}
网友评论