1.加法
公式:(a + b)等价于(a^b) + (a&b)<<1
这是一个递归表达式,递归出口是b=0(假设a存结果)
非递归迭代版本
public class Solution {
public int Add(int num1,int num2) {
while(num2!=0){//若num2==0,则直接返回num1
int temp = num1^num2;//num1异或num2
num2 = (num1&num2)<<1;//(num1与num2)左移1位
num1 = temp;
}
return num1;
}
}
递归版本
public class Solution {
public int Add(int num1,int num2) {
if(num2==0)
return num1;
int temp = num1^num2;
num2 = (num1&num2)<<1;
num1 = temp;
return Add(num1,num2);
}
}
2.减法
公式:a - b 等价于 a + ~b + 1
调用上述的Add() 函数实现
参考:https://blog.csdn.net/weixin_33720956/article/details/86207218
https://www.nowcoder.com/profile/645151/codeBookDetail?submissionId=1512236