สมมติว่าเรามีจำนวนเต็มสองตัว a และ b งานของเราคือการหาผลรวมของจำนวนเต็มสองตัวนี้ ข้อจำกัดอย่างหนึ่งคือ เราไม่สามารถใช้ตัวดำเนินการใดๆ เช่น + หรือ - ดังนั้นถ้า a =5 และ b =7 ผลลัพธ์จะเป็น 12
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- สำหรับการแก้ปัญหา เราจะใช้ตัวดำเนินการเชิงตรรกะระดับบิต
- ถ้า b =0 ให้คืนค่า a
- มิฉะนั้น ให้ใช้ฟังก์ชันผลรวมซ้ำโดยระบุ XOR b และ a AND b หลังจากเลื่อนผลลัพธ์ไปทางซ้ายหนึ่งครั้ง
ตัวอย่าง (Python)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <iostream> using namespace std; class Solution { public: int getSum(int a, int b) { return b == 0?a:getSum(a^b, (unsigned int)(a&b)<<1); } }; main(){ Solution ob; cout<<ob.getSum(5,7)<<endl; }
อินพุต
a = 5 b = 7
ผลลัพธ์
12