不使用运算符 +
和 -
,计算两整数 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;}