假设我们有两个整数a和b。我们的任务是找到这两个整数的和。一个约束是,我们不能使用+或-之类的任何运算符。因此,如果a = 5且b = 7,则结果将为12。
为了解决这个问题,我们将遵循以下步骤-
为了求解,我们将使用按位逻辑运算符
如果b = 0,则返回a
否则,通过将XOR b和a和b左移一次来递归地使用求和函数
让我们看下面的实现以更好地理解-
#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