我是靠谱客的博主 丰富冰棍,最近开发中收集的这篇文章主要介绍[算法练习-剑指offer]题48.不用加减乘除做加法(Java)(位运算),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目

题号: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)(位运算)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部