Java Can';t使用递归逐行遍历二维矩阵
我正在尝试按行遍历下面给出的2d矩阵:Java Can';t使用递归逐行遍历二维矩阵,java,algorithm,recursion,matrix,backtracking,Java,Algorithm,Recursion,Matrix,Backtracking,我正在尝试按行遍历下面给出的2d矩阵: s o e g h f l p i e f i c o n d t p l m d u p r i 下面给出了我使用的递归方法,其中初始I=0,j=0,maxRow=5,maxCol=5 public void traversingMatrix(int i, int j) { if (i >= maxRow || j >= maxCol) { return; } traversingMatri
s o e g h
f l p i e
f i c o n
d t p l m
d u p r i
下面给出了我使用的递归方法,其中初始I=0,j=0,maxRow=5,maxCol=5
public void traversingMatrix(int i, int j) {
if (i >= maxRow || j >= maxCol) {
return;
}
traversingMatrix(i, j + 1);
traversingMatrix(i + 1, j);
}
我得到的结果是:
0 0
0 1
0 2
0 3
0 4
/* after this things get weird */
1 4
2 4
3 4
4 4
1 3
1 4
2 4
....
如何解决这一问题,使递归是按行的。您正在遍历矩阵,就像它是一棵二叉树:对于每个元素,您访问两个子元素,即(I,j+1)和(I+1,j) 起始节点是(0,0)。在第一个递归级别上,访问(0,1)和(1,0)。在第二层,(0,2)、(1,1)、(1,1)和(2,0)[注意双重访问]。在第三个层次上,(0,3),(1,2),(2,1),(1,2),(2,1),(1,2),(2,1)和(3,0)[注意三重访问]。等等(实际访问不按此顺序执行。) 修复方法: 从一个节点向左走;仅向下搜索行的第一个节点
public void traversingMatrix(int i, int j) {
if (i >= maxRow || j >= maxCol) {
return;
}
traversingMatrix(i, j + 1);
if (j == 0) traversingMatrix(i + 1, j);
}