2016-05-17 2 views
-1

У меня проблема с рекурсией 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); 
    } 

} 
+2

'(индекс

+0

Возможная Дубликат [Создать треугольник из звезд с использованием только рекурсии] (http://stackoverflow.com/questions/2717111/create-a-triangle-out-of-stars-using-only-recursion) –

ответ

0

Поскольку вы инициализировать array с new String[5][5], все вызовы к fillArrayLine концу проезжавшие массив из пяти элементов, таким образом, заполняя квадрат.

Заменить инициализацию с new String[5][] и установите array[i], как вы идете:

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

wow спасибо за ваше решение! –

Смежные вопросы