思路:将兩個數當作二進制數來處理,比方說6(110)+5(101)=11(1011),可以将二進制的加法過程分成兩部分來處理:先不考慮進位求得兩數的和(即兩數按位異或),然後再将産生的和與進位結果(即兩數按位與然後左移一位)相加,後面這一相加過程可以遞歸調用add函數來實作。
代碼如下:
int add(const int a, const int b)
{
return b == ? a : add(a^b, ((a&b) << ));
}
思路:将兩個數當作二進制數來處理,比方說6(110)+5(101)=11(1011),可以将二進制的加法過程分成兩部分來處理:先不考慮進位求得兩數的和(即兩數按位異或),然後再将産生的和與進位結果(即兩數按位與然後左移一位)相加,後面這一相加過程可以遞歸調用add函數來實作。
代碼如下:
int add(const int a, const int b)
{
return b == ? a : add(a^b, ((a&b) << ));
}