gpt4 book ai didi

java - 在递归调用中计数

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:14:40 24 4
gpt4 key购买 nike

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

网格内的运动是这样的:从 [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;
}

这显然是错误的,首先会返回计数,我尝试了很多其他方法但无济于事......这是完整的类(class)(带有要测试的数组):

link to full class

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

最佳答案

count 已从每次调用 howMany 返回。我认为你只需要保存它:

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

在两个 if block 中执行此操作。我在您的链接代码中进行了此更改并获得了预期的结果 (3)。

关于java - 在递归调用中计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8899933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com