不使用四则运算符计算A+B的值

18 篇文章 2 订阅

题目:

1. 标题:另类加法 | 时间限制:3秒 | 内存限制:32768K | 语言限制:[Python, C++, C#, Java] 请编写一个函数,将两个数字相加。不得使用+或其他算数运算符。
给定两个int A和B。请返回A+B的值
测试样例:
1,2
返回:3


解题思路:

点击这里


代码展示:

class Solution { public:
	int sum = 0;
	int tmp=0;
	int Add(int num1, int num2) {
		if (num2 == 0){
			return num1;
		}
		else{
			//第一步,相加不进位  
			sum = num1 ^ num2;
			//第二步,求得进位的值  
			tmp = (num1 & num2) << 1;
			//第三步,sum和tmp相加  
			return Add(sum, tmp);
		}
	}

非递归版本↓

//非递归版:
 
/*
*两个数异或:相当于每一位相加,而不考虑进位;
*两个数相与,并左移一位:相当于求得进位;
*将两个新得到的数进行add操作,得到的结果和原本两个数相加相同,
*这样会把num2变得越来越小,知道为0是,则两个数的和直接就变成num1.
*/
 
	 int Add(int num1, int num2)
	 {
		while (num2 != 0)
		{
			int temp = num1^num2;
			num2 = (num1&num2) << 1;
			num1 = temp;
		}
		return num1;
	}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值