我需要使用递归找到从1
amatrix[R][C]
开始matrix[0][0]
直到它到达的数字的路径。matrix[R-1][C-1]
我只能向下或向右。在大多数情况下,我没有问题。我的问题只有在无处可去的时候,我需要后退一步。
例如,这是我从文件中获取的矩阵:
1 0 0 0 0 0
1 1 0 0 0 0
1 1 0 0 0 0
1 1 1 1 0 1
1 0 1 1 1 1
0 1 0 1 1 1
问题是当它到达时matrix[4][0]
。我不明白为什么它不会在递归中返回。当它应该返回 true 时,它返回 false。
这是代码:
int findPath(int matrix[][C],int rowSize,int colSize)
{
int a=0,b=0;
if(Find_Path(matrix,rowSize,colSize,a,b)==0)
{
printf("The function return - False\n");
return 0;
}
else
{
printf("The function return - True\n");
return 1;
}
}
int Find_Path(int matrix[][C],int rowSize,int colSize,int a,int b)
{
if(a==(rowSize-1) && (b==colSize-1))
return 1;
if(matrix[a+1][b]==1)
return Find_Path(matrix,rowSize-1,colSize-1,a+1,b);
if(matrix[a][b+1]==1)
return Find_Path(matrix,rowSize-1,colSize-1,a,b+1);
if(matrix[a+1][b]==0 && matrix[a][b+1]==0)
return 0;
}