不能加减乘除
那就计算机最基础的 与、或、非、异或
比如:a+b
若b=0,返回a;
异或运算:1^1 = 0,1^0=1,0^1=1,0^0=0
若不考虑进位,加法结果就是a^b;
若考虑进位,可以将上面的计算结果再加上进位,结果为最后输出
进位的要求 1+1进位为1,0+1进位为0,1+0进位为0,0+0进位为0:很明显这就是&运算。
输出为 (a^b)+(a&b<<1) ————》递归
class Solution {
public:
int bitadd(int a,int b){
if(b == 0)
return a;
int sum = a^b;
int carray = (a&b) << 1;
return bitadd(sum,carray);
}
int Sum_Solution(int n) {
int sum = 0;
for(int i = 1;i <= n;++i){
sum = bitadd(sum,i);
}
return sum;
}
};