Solve it in bitwise, and make sure both `x`

and `y`

are `>=`

zero.

Step 1: If you ignore the carry, say 0+0=1, 0+1=1, 1+0=1, 1+1=0, this is xor operation, `^`

Step 2: Apparently, 1+1 you will get 10, that is 10=(1&1)<<1.

Step 3: Add the return of step 1 and step 2, and continue step 1 and step 2 until carry is 0.

Here is the CPP code

```
class Solution {
public:
int getSum(int x, int y)
{
if ( 0 == y ) return x;
int sum = x ^ y;
int carry = (x & y) << 1;
return getSum(sum, carry);
}
};
```