#include<iostream>
using namespace std;
//利用位运算实现两个整数的加法运算
int add(int a,int b)
{
if(b == 0) return a;
int sum,carry;
//a ^ b是不同位的和
sum = a ^ b;
//a & b是相同位的和的一半,左移1就是两倍
carry = (a & b) << 1;
/*
2018.2.27 17:21 LGL
实际上,两数之和 = 不同位的和+ 相同位的和
当相同位的和为0时,说明不存在进位了,结束递归
sum看作是没有进位的加法,carry看作只有进位的加法
*/
return add(sum , carry);
}
int main()
{
int m,x,y;
cin>>x>>y;
m = add(x,y);
cout<<m<<endl;
return 0;
}
荣耀给予世界,真实留给自己,致敬开源!