规律来源:
(1): 0+0=0;
(2):0+1=1;
(3):1+0=1;
(4) : 1+1=10;
A^B 对每一位进行异或操作:
A&B 用来存储进位;
从而可以:A+B可以先转化为A^B和A&B两个值,由于A&B是进位值,因此需要整体向前移动一位才算进位,如此一来就得到加法的第一步转化公式:
A+B=A^B+(A&B)<<1;
根据以上规律编写代码:
public class Solution {
/**
* @param a: An integer
* @param b: An integer
* @return: The sum of a and b
*/
public int aplusb(int a, int b) {
// write your code here
if(a==0){
return b;
}
if(b==0){
return a;
}
int x = a^b;
int y= a&b;
y=y<<1;
return aplusb(x,y);
}}