1、题目描述,不得使用四则运算符给两个数求和
2、我的思路
必备知识点
两个数的和为不考虑进位情况下两个数的和加上进位
两个数异或结果为不考虑进制的情况下给两个数求和,如5^7=2
两个数相与(&)再左移一位结果为两个数相加后的进位,如(5&7)<< 1 =10
将上述两个值相加则为两个数相加结果为两个数求和,如5^7 + (5&7)<<1 = 2+10 = 12,相当于输入前两个的结果来递归调用自己
3、代码实现
int addWithoutArithmetic(int num1, int num2)
{
if (num2 == 0)
{
return num1;
}
int a = num1^num2;
int b = (num1 & num2) << 1;
return addWithoutArithmetic(a, b);
}