Java 在递归调用中使用整数,返回错误答案

Java 在递归调用中使用整数,返回错误答案,java,Java,当我将(int curr=0)传递到dfs方法中时,它返回0,但是如果我使用count[],它返回正确的答案,我不太理解当我将curr[]更改为curr时结果错误的原因 public int maxAreaOfIsland(int[][] grid) { int row = grid.length; int col = grid[0].length; int max = 0; int[] curr = new int[1];

当我将(int curr=0)传递到dfs方法中时,它返回0,但是如果我使用count[],它返回正确的答案,我不太理解当我将curr[]更改为curr时结果错误的原因

 public int maxAreaOfIsland(int[][] grid) {
        int row = grid.length;
        int col = grid[0].length;
        int max = 0;
        int[] curr = new int[1];
        for(int i=0;i<row;i++) {
            for(int j=0;j<col;j++) {
                if(grid[i][j] == 1) {
                curr[0] = 0;
                    dfs(grid, i, j, curr);
                    max = Math.max(max, curr[0]);
                }
            }
        }
        return max;
    }

    int[][] directions = new int[][]{{0,1},{0,-1},{1,0},{-1,0}};
    public void dfs(int[][] grid, int i, int j, int[] curr) {
        if(i<0||i>=grid.length||j<0||j>=grid[0].length||grid[i][j] == 0 )
            return;
        curr[0]+=1;
        grid[i][j] = 0;
        dfs(grid, i+1,j, curr);
         dfs(grid, i-1,j,curr);
        dfs(grid, i,j+1,curr);
        dfs(grid, i,j-1,curr);
        
    }
public int maxAreaOfIsland(int[][]网格){
int row=grid.length;
int col=网格[0]。长度;
int max=0;
int[]curr=新int[1];

对于(inti=0;iJava按值传递参数

void A(int x) {
   x = 42;
} 

void B() {
   int y = 0;
   A(y);
}
A的调用实际上是“使用
y
的值初始化局部变量
x
”。对
x
的后续操作与
y
没有关联


在数组的情况下,数组的引用是按值传递的(即复制的),但它是同一个数组。

当我传递(int curr=0)时,你是什么意思?
curr
参数是
int
的数组。你是指当你传递
new int[]{0}
还是
new int[]{}
或其他什么?请提供一个演示“工作”和“不工作”版本的示例,并准确描述“不工作”的含义。我不明白为什么我应该使用数组(curr[])来记录结果,为什么我不能只使用int(curr)来记录?你所说的int(curr)是什么意思?