Java 递归调用中的计数

Java 递归调用中的计数,java,algorithm,recursion,Java,Algorithm,Recursion,我需要写一个方法来检查有多少种可能的方法来完成一个网格(一个2D数组) 网格内的运动如下所示: 从[0][0]开始,取其中的数字(例如14),然后转到任一 [array.[0][0]%10][array.[0][0]/10]或[array.[0][0]/10][array.[0][0]%10] 例如: [1][4]或[4][1] 直到到达数组的末尾(右下角) 我可以到达数组的末尾(所有可能的方法)-我的问题是计算实际完成数组的次数-我不能在方法之外使用变量,方法必须是递归的 代码如下: priv

我需要写一个方法来检查有多少种可能的方法来完成一个网格(一个2D数组)

网格内的运动如下所示: 从[0][0]开始,取其中的数字(例如14),然后转到任一
[array.[0][0]%10][array.[0][0]/10]
[array.[0][0]/10][array.[0][0]%10]

例如:
[1][4]
[4][1]

直到到达数组的末尾(右下角)

我可以到达数组的末尾(所有可能的方法)-我的问题是计算实际完成数组的次数-我不能在方法之外使用变量,方法必须是递归的

代码如下:

private static int howMany(int[][] array, int y, int x, int count) {
    if(y+(array[y][x]%10) < array.length && x+(array[y][x]/10)< array[y].length && array[y][x]!=0) {
        System.out.println("["+y+"]["+x+"] is: "+array[y][x]);
        howMany(array, y+(array[y][x]%10), x+(array[y][x]/10),count);
    }
    if(y+(array[y][x]/10) < array.length && x+(array[y][x]%10)< array[y].length && array[y][x]!=0) {
         System.out.println("["+y+"]["+x+"] is: "+array[y][x]);
         howMany(array, y+(array[y][x]/10), x+(array[y][x]%10),count);
    }
    if(y==array.length-1 && x==array[y].length-1) count++;
    return count;  
}
private static int多少(int[][]数组,int y,int x,int count){
如果(y+(数组[y][x]%10)
这显然是错误的,并将返回什么计数是在第一位,我尝试了许多其他方法,但没有结果。。。 下面是完整的类(带有要测试的数组):


编辑:非常感谢大家的帮助

每次调用
howMany
都会返回
计数。我想你只需要保存它:

count = howMany(array, y + (array[y][x] % 10), x + (array[y][x] / 10), count);

在两个
if
块内执行此操作。我在链接代码中做了此更改,并得到了预期结果(
3
)。

如果到达数组末尾(右下角),则返回1,否则返回
1+howMany(array,newY,newX)
。你不必每次都记下并通过它。该函数将按如下方式工作:
1+
第二次调用的返回值
=
1+1+
第三次调用的返回值
=
第四次调用的1+1+1+
返回值
=。。。等等。

最后,您将得到您想要的调用数。

您已经走上了正确的轨道,因为您的方法签名返回一个int。您应该定义一个变量来保存计数,为主要递归调用递增它,并将递归方法本身的结果添加到该变量中。将计数传递到每个递归调用中是不必要的,应该删除。

谢谢,我使用了它(主要是因为它需要更少的更改,呵呵)