概述
题目
题号:48
题目名:不用加减乘除做加法
编程语言
Java
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
初次思路
这道题只能使用位运算
两数相加可以转换成两个数的进位和非进位的和
使用递归解决问题,递归出口是当进位和为0时,返回非进位
进位=num1^num2
非进位=(num1&num2)<<1
解题代码
public class Solution {
public int Add(int num1,int num2) {
/**
* 使用进位与非进位的和
* num1+num2可以用他们的进位+非进位的和表示
* 进位=num1^num2
* 非进位=(num1&num2)<<1
* 当进位和为0时,返回非进位,就是最终值
*/
//假设num1为进位,num2为非进位
if(num2==0) return num1;
int in=num1^num2;//进位
int noIn = (num1&num2)<<1;
return Add(in,noIn);
}
}
算法练习代码我都开源在码云上,有需要的朋友可以看看
https://gitee.com/xiaoxiaoyuworkspace/offeralgorithm
最后
以上就是丰富冰棍为你收集整理的[算法练习-剑指offer]题48.不用加减乘除做加法(Java)(位运算)的全部内容,希望文章能够帮你解决[算法练习-剑指offer]题48.不用加减乘除做加法(Java)(位运算)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复