剑指 Offer 65. 不用加减乘除做加法

发布时间 2023-09-11 20:08:29作者: 小星code

题目链接: 剑指 Offer 65. 不用加减乘除做加法

题目描述:

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

解法思路:

不用加减乘除,那么可以用位运算代替: 可以用 a^b 运算表示无进位的加法 可以用 (a&b)<<1 表示进位

因此 a+b=a^b + ((a&b)<<1) 此时再把 a^b 看做 a,把 (a&b)<<1 看做 b,递归调用即可。

代码:

func add(a int, b int) int {
	if b == 0 {
		return a
	}
	return add(a^b, (a&b)<<1)
}