思路:
1.兩個數異或:相當於每一位相加,而不考慮進位;
2.兩個數相與,並左移一位:相當於求得進位;
3.將上述兩步的結果相加;
參考代碼:
public static int Add(int num1,int num2) {
while (num2!=0) {
int temp = num1^num2;//異或相當於加,但不考慮進位
num2 = (num1&num2)<<1;//按位與再左移一位用來計算進位
num1 = temp;
}
return num1;
}
//遞歸版本
public static int Add2(int num1,int num2) {
if(num2==0){
return num1;
}else{
return Add(num1^num2,(num1&num2)<<1);
}
}