面试题 17.01. 不用加号的加法

2022-01-25  本文已影响0人  itbird01
题目.png

题意:设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。

解法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);
        }
    }
}

上一篇 下一篇

猜你喜欢

热点阅读