Java 返回所有匹配答案的递归
您好,我正在使用递归,如下所示Java 返回所有匹配答案的递归,java,recursion,return,Java,Recursion,Return,您好,我正在使用递归,如下所示 public static int match(int[][] mat , int count) { boolean isComplete = true; for(int i=0;i<mat.length;i++) { for(int j=0;j<mat[i].length;j++) { if(mat[i][j] =
public static int match(int[][] mat , int count)
{
boolean isComplete = true;
for(int i=0;i<mat.length;i++)
{
for(int j=0;j<mat[i].length;j++)
{
if(mat[i][j] == 0)
{
isComplete = false;
count++;
ArrayList<int[][]> mMats = getMats(mat, i, j);
for(int k=0;k<mMats.size();k++)
{
match(mMats.get(k), count);
}
}
}
}
if(isComplete)
{
System.out.println(count);
return count;
}
else
{
return 0;
}
}
公共静态int匹配(int[][]mat,int count)
{
布尔值isComplete=true;
对于(int i=0;i如果递归调用返回的不是0
,则可以停止迭代。例如,当找到第一个匹配时:
...
for(int k=0;k<mMats.size();k++) {
int ret = match(mMats.get(k), count);
if(ret != 0)
return ret;
}
...
。。。
对于(int k=0;k函数正在打印多个计数,因为if(isComplete)
可以在每次递归运行函数时调用。如果您只需要总计数,则可以打印第一次调用匹配函数的任何位置的返回值。对于解决方法,我取了0,实际上任何数字都可以替换为0。@Crazy您返回的计数,我假设它是正的。所以您可以返回-1而不是0并检查它。