题意:设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。
解法1:
在十进制中,3+8=1+10=11(其中1为不进位的数字,10为进位后)
同理,在二进制中,按位异或得到不进位的数字,按位与得到需要进位的数字。
所以,很容易得出递归的解法(注意,当a和b相加进位数字为0时,a^b即为a+b的结果,所以a&b==0做递归出口)
解题遇到的问题
无
后续需要总结学习的知识点
无
##解法1
class Solution {
public int add(int a, int b) {
if((a&b)==0){
return a^b;
}
else{
return add((a&b)<<1,a^b);
}
}
}
网友评论