本文共 508 字,大约阅读时间需要 1 分钟。
给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。
class Solution { public int aplusb(int a, int b) { if(b == 0) return a; while(b != 0) { //对于是否产生加法进位,仅在1+1时需要,所以使用与运算 int carry = a & b; //对于加法位运算,1+1->0 1+0->1 0+0->0,所以使用异或 a = a ^ b; //进位是对前一位操作,故右移 b = carry << 1; } return a; }}
使用递归实现如下
class Solution { public int aplusb(int a, int b) { if(b == 0) return a; return aplusb2(a ^ b, (a & b) << 1); }}
转载地址:http://yijgj.baihongyu.com/