java - 用Java递归填充矩阵(二维数组)

我有一个Java编程工作要做,在一个问题中,我到处都必须在布尔2d数组(矩阵)中填充“ false”。我使用了两个循环,如下所示:

// The length and width are given

boolean [][] matrix; 
matrix = new boolean [length][width];

int row;
int col;

for (row = 0; row < length; row++)
{
   for (col = 0; col < width; col++)
   {
      matrix[row][col] = false;
   }
} 


事情是,我们刚刚开始了递归章节,我想是否有办法做同样的事情,但是这次只使用递归...
谢谢!

最佳答案

您可以使用递归来模拟嵌套循环结构:

public static void fillWithFalse(boolean[][] array, int row) {
    if (row < array.length) {
        fillWithFalse(array[row], 0);
        fillWithFalse(array, row + 1);
    }
}

public static void fillWithFalse(boolean[] array, int col) {
    if (col < array.length) {
        array[col] = false;
        fillWithFalse(array, col + 1);
    }
}


要么

public static void fillWithFalse(boolean[][] array, int row, int col) {
    if (row < array.length) {
        if (col < array[row].length) {
            array[row][col] = false;
            fillWithFalse(array, row, col + 1);
        } else {
            fillWithFalse(array, row + 1, 0);
        }
    }
}


这是相同的逻辑。但是递归对这种事情不利,并且用假值填充数组的正确解决方案是:

boolean[][] matrix = new boolean[length][width];


因为布尔数组将默认初始化,所有元素均为false。如果赋值实际上是用false填充布尔数组,那么这可能基本上是一个技巧问题,因为除了实例化数组之外,无需执行任何操作。