题目链接: 剑指 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)
}
标签:Offer,int,不用,65,加法,加减乘除
From: https://www.cnblogs.com/lxing-go/p/17694384.html