JZ47 求1+2+3+...+n

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

思路:计算1+2+3+...+n, 可以认为是一个递归的过程, 这点很容易理解。但是怎么不用分支判断来保证递归的终止呢。通过短路运算0&&cout使条件为假值,从而不执行输出语句,那么我们也可以通过短路来实现循环终止,从n开始递减进程递归的相加运算当递归至0时使递归短路即可。

 

var res int = 0
func Sum_Solution( n int ) int {
    helper(n)
    return res
}

func helper(n int) bool {
    res += n
    return n > 1 && helper(n - 1)
}

  

posted @ 2021-04-10 20:23  zqlucky  阅读(48)  评论(0编辑  收藏  举报