LintCode: A + B Problem 兩數相加

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

題目連結 https://www.lintcode.com/problem/a-b-problem/description

當然可以用a + b 直接解題,不過此題希望解題者可不用算數運算子達成,這要怎麼做呢?首先想到的是數位邏輯裡的加法器,所以就用位元運算來解題。

File:Half Adder.svg
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
    int aplusb(int a, int b) {
        // write your code here, try to do it without arithmetic operators.
        int sum,carry;  
        
        if (b == 0) 
            return a;
        
        sum = a ^ b; // 無進位加總
        carry = (a & b) << 1; // 進位
        return aplusb(sum, carry);
    }

沒有留言: