JZ-048-不用加减乘除做加法
不用加减乘除做加法 题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。代码
【JZ-048-不用加减乘除做加法】题目链接: 不用加减乘除做加法
/**
* 标题:不用加减乘除做加法
* 题目描述
* 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
* 题目链接:
* https://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215?tpId=13&&tqId=11201&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
*/
public class Jz48 {/**
* a ^ b 表示没有考虑进位的情况下两数的和,(a & b) << 1 就是进位。
* 递归会终止的原因是 (a & b) << 1 最右边会多一个 0,那么继续递归,进位最右边的 0 会慢慢增多,最后进位会变为 0,递归终止。
*/
public int add(int num1, int num2) {
return num2 == 0 ? num1 : add(num1 ^ num2, (num1 & num2) << 1);
}public static void main(String[] args) {
Jz48 jz48 = new Jz48();
System.out.println(jz48.add(2, 6));
}
}
【每日寄语】 要相信,看似不起波澜的日复一日,一定会在某一天让我们看到坚持的意义。
推荐阅读
- 2017.12.28
- 2018最后一个月不用吃土了
- 全面掌握Android 组件化,写给开发者的高级 Android 组件化强化实战,再也不用担心项目做不好了
- 不用session的验证码
- 春节回家抢不到票(vivo手机用户学会这一招再也不用愁!)
- java之BigDecimal的加减乘除
- 嘱咐
- 有了这三个方法孩子再也不用上记忆力培训班了!
- 为什么 APP 要用 token 而不用 session 认证()
- 外部调用,通过activity,不用广播,后台运行的activity