写一个函数,求两个整数的之和,要求在函数体内不得使用+、-、×、÷
分析:这是一道考察发散思维的很有意思的题目。当我们习以为常的东西被限制使用的时候,如何突破常规去思考,就是解决这个问题的关键所在。
对数字做运算,除了四则运算之外,也就只剩下位运算了。
1 int AddWithoutArithmetic(int num1, int num2)
2 {
3 if(num2 == 0)
4 return num1;
5
6 int sum = num1 ^ num2;
7 int carry = (num1 & num2) << 1;
8
9 return AddWithoutArithmetic(sum, carry);
10 }