多递归点的程序顺序分析
程序中的递归的定义:
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)递归结束之后,再一次递归的时候是首先从头开始进入第二个递归的。然后开始拼接。
从这三张图中可以看到,首先进入的是第一个递归调用点,一直到第一个递归调用点进入结束条件,然后在进入第二个递归调用点。