码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2021-04-12 12:09:00      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:+=   pre   col   循环   switch   过程   一个   else   递归   

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

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

func Sum_Solution(n int) int {
    ans := 0
    var sum func(int) bool
    sum = func(n int) bool {
        ans += n
        return n > 0 && sum(n-1)
    }
    sum(n)
    return ans
}

 

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

标签:+=   pre   col   循环   switch   过程   一个   else   递归   

原文地址:https://www.cnblogs.com/dingxiaoqiang/p/14642018.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!