前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >递归算法:计算1+2+3+……+n的值

递归算法:计算1+2+3+……+n的值

作者头像
Java深度编程
发布2020-06-10 09:21:59
2.8K0
发布2020-06-10 09:21:59
举报
文章被收录于专栏:Java深度编程
代码语言:javascript
复制
public class Main {

    public static int test(int n){
        int temp = 0 ;
        if (n-1>0){
            temp = n + test(n-1);
        }else {
            temp = n;
        }
        return temp;
    }

    public static void main(String[] args) {
        int test = test(10);
        System.out.println(test);
    }
}

测试结果:

代码语言:javascript
复制
55

要理解该算法,需要先懂递归。很多人只知道递归是自己调用自己,却并不明白自己调用自己的变量作用域的关系,其实每一次调用自己它的变量都是独立的,是互不影响的,如果你实在理解不了,就把这所有递归的次数,每一次调用都当成不是在调用自己,而是另一个独立的方法。

比如我们可以把上面的test()方法,写成10个test()方法,用1,2,3……10来区分,然后将上面的代码写成一个循环,没一次循环调用不同的方法,执行相同的逻辑,能得到相同的结果,这样有助于自己对递归的理解。

其实递归真的没那么难,你觉得难可能是一种心理障碍,没有去思索它,缺乏了探索的精神而已。你只需要把每一次递归都当成调用了一次方法,这个方法得到了一个返回结果,这个结果接着又调用了一个跟自己一样逻辑的方法,继续参与了运算,如果反复往返罢了!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java深度编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档