多递归点的程序顺序分析

程序中的递归的定义:

1. 程序调用本身的过程,称之为递归

那么一个程序中出现多个递归调用,这个过程是怎么样呢?如下图:

    public static int dfs(int n){
        if (n == 2)
            return 1;
        if (n == 1)
            return 1;

        return dfs(n - 1) + dfs(n - 2);
    }

 

 

 

 

第一张图和第二张图相比而言,调整了递归点。一个是dfs(n - 1) + dfs(n - 2),以及dfs(n - 2) + dfs(n - 1)。证明了首先进入的是程序中第一个递归调用点。

第二张图和第三张图相比而言,是相同的递归结构,但是表明的是在dfs(n - 1)递归结束之后,再一次递归的时候是首先从头开始进入第二个递归的。然后开始拼接。

 从这三张图中可以看到,首先进入的是第一个递归调用点,一直到第一个递归调用点进入结束条件,然后在进入第二个递归调用点。 

posted @ 2020-02-17 21:32  知事  阅读(270)  评论(0编辑  收藏  举报