美文网首页
怎么理解递归

怎么理解递归

作者: 一见你就笑嘻嘻 | 来源:发表于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)
        }        
    
    }
    
    

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

    相关文章

      网友评论

          本文标题:怎么理解递归

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