题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
方法一:
<span style="color:#FF0000;">public class Solution {
public int Add(int num1,int num2) {
int n1=((num1&num2)<<1); //需要进位的部分
int n2=(num1^num2); //不需要进位的部分
if((n1&n2)==0)
return (n1|n2); //如果两个部分没有重合,按位或和加法是相同的。
else
return Add(n1,n2); //如果两个部分有重合,递归。
}
}</span>
方法二(少了递归):
<span style="color:#FF0000;">public class Solution {
public int Add(int num1,int num2) {
while (num2!=0) {
int temp = num1^num2;
num2 = (num1&num2)<<1;
num1 = temp;
}
return num1;
}
}
</span>