不用加减乘除做加法

//   非递归实现
int
Add (int num1, int num2){ int sum, carry; do{ sum = num1 ^ num2; // 做异或运算 carry = (num1 & num2) << 1; // 进位 num1 = sum; num2 = carry; }while(num2 != 0); // 直到进位为0 return num1; }

 

// 递归实现

int add(int a, int b){
    if (b == 0){
        return a;
    }
    int sum = a ^ b;    //  做异或
    int carry = (a & b) << 1; // 与、移位
    return add(sum, carry);
}

 

posted @ 2017-10-20 23:47  爱简单的Paul  阅读(166)  评论(0编辑  收藏  举报