不使用運算符?+
?和?-
?,計算兩整數?a
?、b
?之和。
示例 1:
輸入: a = 1, b = 2
輸出: 3
示例 2:
輸入: a = -2, b = 3
輸出: 1
方法一:遞歸
public static int getSum1(int a, int b) {if ((a & b) != 0) { // 判斷是否有進位return getSum1(a ^ b, (a & b) << 1); // 不進位和進位相加} else {return a | b; // 不進位方式相加(此處返回a ^ b亦可)}}
方法二:迭代
public static int getSum2(int a, int b) {while (a != 0) {int forward = (a & b) << 1; // 進位b = a ^ b; // 不進位求和a = forward; // 保存進位用于下次運算}return b;}
?