Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回所有匹配答案的递归_Java_Recursion_Return - Fatal编程技术网

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并检查它。