数组引用递归

时间:2016-05-17 17:13:05

标签: java arrays recursion

我的2D数组递归有问题。它应该打印这个

*
**
***
****
*****

但我只得到这个:

*****
*****
*****
*****
*****

我认为这是因为我每次都写到同一个数组并覆盖旧的结果。这是我的代码:

public class filleArrayRec {

    public static void main(String[] args) {
        String[][] array = new String[5][5];

        fillArr(array, 0);

        for (String[] i : array) {
            for (String j : i) {
                System.out.print(j);
            }
            System.out.println();
        }
    }

    private static void fillArr(String[][] array, int index) {
        if (index < array.length) {
            array[index] = fillArrayLine(array[index], 0);
        } else {
            return;
        }

        fillArr(array, index+1);
    }

    private static String[] fillArrayLine(String[] array, int index) {
        if (index < array.length) {
            array[index] = "*";
        } else {
            return array;
        }

        return fillArrayLine(array, index+1);
    }

}

1 个答案:

答案 0 :(得分:0)

由于您使用array初始化new String[5][5],所有对fillArrayLine的调用最终都会传递一个五元素数组,从而填充一个正方形。

将初始化替换为new String[5][],然后设置array[i]

array[index] = fillArrayLine(new String[index+1], 0);