剑指offer-求1+2+...+n

剑指offer-求1+2+...+n

一、题意

求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)

二、分析

不能使用乘除法就意味着不能使用公式,循环和条件判断也不能用,就不能通过遍历累加得到结果,所以只能用递归,递归的终止条件用逻辑与来终止(短路特性),即当n为0时,不再递归直接返回结果。

三、代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

package main

import (
"fmt"
"math"
)

// 利用公式1+2+...+n = (n+1)*n/2
func sumSolution(n int) int {
return (int(math.Pow(float64(n), 2)) + n) >> 1
}

func main() {
n := 3
res := sumSolution(n)
fmt.Printf("当n=%d,1+2+...+n的值是%d", n, res)
}

// 输出如下:
--------------------------------------
当n=31+2+...+n的值是6

Process finished with exit code 0
--------------------------------------
评论

:D 一言句子获取中...

加载中,最新评论有1分钟缓存...