funcgetSum(a int, b int)int{
sum :=0
carry :=0for b!=0{
sum = a ^ b
carry =(a&b)<<1
a = sum
b = carry
}return a
}
面试题:不用加号的加法
funcadd(a int, b int)int{
sum :=0
carry :=0for b!=0{
sum = a ^ b
carry =(a&b)<<1
a = sum
b = carry
}return a
}
递归乘法
funcmultiply(A int, B int)int{
res :=0trval(A, B,&res)return res
}functrval(a, b int, res *int){if b ==0{return}*res += a
trval(a, b-1, res)}
反转两次的数字
funcisSameAfterReversals(num int)bool{if num %10==0&& num !=0{returnfalse}returntrue}
x的平方根
funcmySqrt(x int)int{if x <=1{return x
}returnbinarySearch(0, x/2, x)}funcbinarySearch(start, end int, target int)int{
res :=0for start <= end {
mid :=(start + end)/2
tmp := mid * mid
if tmp > target {
end = mid -1}else{
res = mid
start = mid +1}}return res
}
pow(x, n)
funcmyPow(x float64, n int)float64{if n >0{returnp(x, n)}return1/p(x,-n)}funcp(x float64, n int)float64{
res :=1.0
num := x
for n !=0{if n &1!=0{
res *= num
}
num *= num
n >>=1}return res
}
函数基础两数之和面试题:不用加号的加法递归乘法反转两次的数字x的平方根pow(x, n)两数之和func getSum(a int, b int) int { sum := 0 carry := 0 for b!= 0 { sum = a ^ b carry = (a&b) << 1 a = sum b = carry } return a}面试题:不用加号的加法func