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

标签 java arrays recursion multidimensional-array

我有一项 Java 编程作业要做,在其中一个问题中,我必须在所有地方都用“false”填充 boolean 二维数组(矩阵)。我使用两个循环来完成它,如下所示:

// 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);
        }
    }
}

这是相同的逻辑。但是递归对于这种事情并不好,而且用 false 填充数组正确的解决方案是这样的:

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

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

关于java - 在 Java 中递归填充矩阵(二维数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20157372/

相关文章:

php - 在数据库中插入数组值

javascript - 循环遍历数组,每次都进行ajax调用,不起作用

python - 如何将单链表递归元素和转换为迭代解决方案

java - 记录巨大的消息(大约 90 MB)会导致 OutOfMemory 错误吗? (最大堆大小 : 2048M)

Java Swing 应用程序,对话框检查范围内的数字

javascript - 遍历多维数组,过滤并在 javascript 中创建新数组

c - 你如何使用递归从右边遍历来打印数组中的偶数?

c - 两个地点有什么区别?

java - 如何将 JAR 文件捆绑到 Mac 应用程序包中

java - 带有 JAX-RS 2 和 Tomcat 9 的 RESTful Java