1. 程式人生 > >演算法題系列之六 - 兩整數之和

演算法題系列之六 - 兩整數之和

不使用運算子 + 和 - ,計算兩整數 ​​​​​​​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;
	}