我有一个Java编程工作要做,在一个问题中,我必须到处都用“ false”填充一个布尔2d数组(矩阵)。我使用了两个循环,如下所示:
// 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填充布尔数组,那么这可能基本上是一个技巧性的问题,因为除了实例化数组之外,无需执行任何操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句