题目如下 解析 本题的特殊之处在于不能使用特殊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 }