我是递归概念的新手。下面是计算从(0,0)到(n,m)的路径总数的代码。到达最终位置的规则是我们只能向右或向下移动。我无法理解递归是如何工作的。
我试图通过使用print语句来理解它,但无法理解在第三次调用'' rightPath ''之后发生了什么。
public class Main{
public static int countPaths(int i, int j, int n, int m){
if(i==n || j==m){
return 0;
}
if(i==n-1 && j==m-1){
return 1;
}
int downPath = countPaths(i+1, j, n, m);
int rightPath = countPaths(i, j+1, n, m);
return downPath + rightPath;
}
public static void main(String[] args){
int n = 3, m = 3;
int totalPaths = countPaths(0, 0, n, m);
System.out.println(totalPaths);
}
}
谁来解释一下递归是怎么工作的。
2条答案
按热度按时间euoag5mw1#
不确定,但也许这可以帮助你:
它旨在向您展示如何嵌套执行函数以及计算和返回哪些值。
ojsjcaue2#
"countPaths"函数在每一步被递归调用两次,在本例中有两个BASE条件,其作用是阻止递归函数无休止地执行(即两个IF语句)。
每次执行时,创建2个新的嵌套调用(D AND R)(path),递增i或j ...除非满足其中一个条件。然后使用返回值的总和计算总路径。
像这样: