Leetcode 1+2+…+n

题目如下

Leetcode 1+2+…+n_第1张图片

解析

本题的特殊之处在于不能使用特殊if ,循环迭代、以及乘法除法。

如此一来无法是让我们用递归来做,主要是屏蔽if 这个判断条件,那么如何规避呢?
很简单,大多数语言普遍支持的&& 短路,有着跟||类似的特性,前面为false,后面不再执行。

func sumNums(n int) int {
    var f func(k int,ret *int) bool
	var res int
	f = func(k int,ret *int) bool{
		*ret+=k
		return  k!=0 && f(k-1,ret)
	}
	f(n,&res)
	return res
}

你可能感兴趣的:(Leetcode)