网站首页 LeetCode

剑指offer 求1+2+3+4+。。。。。+n

发布时间:2021-3-2 9:09 Tuesday编辑:admin阅读(313)

    短路求值:作为“&&”和“||”操作数表达式,这些表达式在进行求值时,只要最终的结果已经确定真或假,求值过程便告终,这就是短路求值。因此可以利用左边的表达式来作为递归结束的判断条件。因此递归的表达式就在右边了。使用&&,表示两边都为真,才为真,左边为假,右边就没用了。因此在不断递归时,直到左边为假时,才不执行右边。因此在第一次进行右边的判断时,就进入递归的调用。


    func Sum_Solution( n int) int {
    	var f func(ret *int, n int) bool
    	f = func(ret *int, n int) bool {
    		*ret += n
    		return n>0 && f(ret, n-1)
    	}
    	var sum int
    	f(&sum,n)
    	return sum
    }