題目連結 https://www.lintcode.com/problem/a-b-problem/description。
當然可以用a + b 直接解題,不過此題希望解題者可不用算數運算子達成,這要怎麼做呢?首先想到的是數位邏輯裡的加法器,所以就用位元運算來解題。
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); } |
沒有留言:
張貼留言