Golang 不使用加号实现 A+B

BroQiang 9个月前 访问:498 评论:0 关注:0

Golang 不使用加号实现 A+B,此问题来自: lintcode

问题描述:

说明
a和b都是 32位 整数么?

是的
我可以使用位运算符么?

当然可以
样例
如果 a=1 并且 b=2,返回3。

挑战
显然你可以直接 return a + b,但是你是否可以挑战一下不这样做?(不使用++等算数运算符)

代码实现

package main

import "fmt"

func main() {
    i := aplusb(5, 17)
    fmt.Println(i)
}

func aplusb(a int, b int) int {
    if a == 0 {
        return b
    }
    if b == 0 {
        return a
    }

    x1 := a ^ b
    x2 := (a & b) << 1

    return aplusb(x1, x2)
}
评论

还没有人评论 ~

公告
博客正式从原来的 Github Page 迁移到这里,原本的内容可以通过 broqiang.github.io 访问
返回顶部