java在递归中使用相同的变量
我试图在一个特定的问题上应用洪水填充。我很难理解如何使用帮助函数创建变量,所以我在所有递归过程中都会保留它
虽然我不知道如何将其应用于我自己的使用,但我已经看到了一条关于它的线索
这是我到目前为止写的代码:
如何创建k变量以保持不变
public static int[][] fill(int[][] map, int i, int j, int color) {
int[][] ans = null;
if ((i<map.length)&&(i>0)&&(j<map.length)&&(j>0))
{
if ((k!=map[i][j]))
{
map[i][j]=color;
}
}
fill(map,i-1,j,color);
fill(map,i+1,j,color);
fill(map,i,j-1,color);
fill(map,i,j+1,color);
return ans;
}
public static void fill(int[][] map, int i, int j, int color,int k)
k=map[i][j]
假设这是我的阵列:
4,1,2,2
4,4,3,1
1,4,4,4
1,4,0,2
我希望用洪水填充所有值为4的索引。 我希望k得到4的值,这样我就可以用k来比较每个索引
# 1 楼答案
除了你的问题,我注意到你的函数不起作用,因为你要检查边界,你要检查行或列是否等于电路板长度,这没关系,但你需要将它改为<;,而不是<;=。无论如何,您可以这样使用代码:
检查:
祝你好运
# 2 楼答案
你可以使用一个新函数来获取k的值(我在示例中称之为origColor),然后将它传递给需要它的函数。使用k的函数不需要从外部可见,除非您也希望,所以我在下面将其设置为私有