美文网首页
怎么理解递归

怎么理解递归

作者: 一见你就笑嘻嘻 | 来源:发表于2019-02-19 17:11 被阅读0次

怎么理解递归?

这是一个曾经困扰过我的一个问题,简单理解:

  1. 递归就是方法自己调用自己
  2. 编写的时候一定要有一个结束条件,否则将会造成StackOverflowError的错误。

先来看一个栗子:
当我们需要计算1 ~ n 的和时,一般的代码会这么写:

public static void main(String[] args){

    int n = 5;

    //调用该方法完成1-N的求和
    int result = sum(n);

    System.out.println(result);

}

//1-N的求和.
public static int sum(int n){

    int sum = 0;

    for(int i=0;i<=n;i++){
        sum += i;
    }

    return sum;
}

使用递归时,代码如下:

public static void main(String[] args){

    int n = 5;

    //调用该方法完成1-N的求和
    int result = sum(n);

    System.out.println(result);

}

//该方法完成1-N的求和.
//1+2+3+4+5+...N
public static int sum(int n){

    if(n==1){
        return 1;
    }else{
        return n + sum(n-1);
    }

}

那我们来理解一下什么叫做 “ 自己调自己 ” 吧!

public static void main(String[] args){

    int n = 5;

    //调用该方法完成1-N的求和
    int result = sum(n);

    System.out.println(result);

}

//该方法完成1-N的求和.
//1+2+3+4+5+...N
public static int sum(int n){  //第一次执行:n=5;第二次执行:sum(4)...

    if(n==1){                          //第一次:n=5,所以不执行;第二次执行:n=4,所以不执行;...
        return 1;                      //第五次执行n==1,return = 1;
    }else{                
        return n + sum(n-1);        // 第一次执行: 5 + sum(5-1)  即为 :5 + sum(4) 
                                    // 第二次执行: 4 + sum(4-1)  即为 :4 + sum(3) 
                                   //...3-1, 3 + sum(2)
                                   //第四次执行: 2 + sum(,2-1)  即为 :2 + sum(1)
    }        

}

结果是多少自己算算,哈哈

相关文章

  • 怎么理解递归

    怎么理解递归? 这是一个曾经困扰过我的一个问题,简单理解: 递归就是方法自己调用自己 编写的时候一定要有一个结束条...

  • 第十节-递归

    这节课的思路主要是如何理解递归 --> 递归的三个条件 --> 如何编写递归 --> 递归要注意的点 --> 怎么...

  • 怎么理解递归函数

    可参考:http://blog.csdn.net/vagrxie/article/details/8470798 ...

  • CSI讲义8:理解递归

    所有的计算都是递归;要理解递归首先要理解递归。 程序设计思想之一“递归”历来是同学们的理解难点。据说,**要理解递...

  • 数据结构之理解递归

    理解递归 要理解递归, 首先要理解递归 --佚名 递归是一种解决问题的方法, 他从解决问题的各个小部分开始, 知道...

  • 理解递归

    反转链表 还是老样子,我们先假设n-1个链表已经反转完成了: 那么此时我们应该怎么做呢?此时1这个元素的next指...

  • 理解递归

    从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和...

  • 理解递归

    递归的概述 摘取维基百科关于递归的描述:递归(英语:Recursion),又译为递回,在数学[https://zh...

  • 回溯法

    我理解的回溯法,其实是使用递归去解决问题的一种算法思想。说起来我们会自然而然的想到用递归,而这个递归应该怎么用呢?...

  • 94. Binary Tree Inorder Traversa

    递归!!!容易理解!!! 迭代:不太好理解:

网友评论

      本文标题:怎么理解递归

      本文链接:https://www.haomeiwen.com/subject/xoefyqtx.html