不用加减乘除做加法

来源:互联网 发布:阿里云短信接口demo 编辑:程序博客网 时间:2024/06/05 06:39

题目:

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

解题思路:

1.不带进位的加:num1 ^ num2
2.进位:(num1 & num2) << 1

解法一(递归)

java实现:

public class Solution {    public int Add(int num1,int num2) {        if((num1 & num2) == 0) //如果没有进位            return num1 ^ num2;        return Add(num1 ^ num2, (num1 & num2) << 1);    }}

解法二(循环)

java实现:

public class Solution {    public int Add(int num1,int num2) {        int sum = 0;        int carry = 0;        do{ //本身没有进位也得算一次            sum = num1 ^ num2;            carry = (num1 & num2) << 1;            num1 = sum;            num2 = carry;        } while(carry != 0);        return sum;    }}
原创粉丝点击