2014-12-08 4 views
2

Итак, я написал программу, которая реализует графики в java и получил все, как я хочу, чтобы она работала, за вычетом печати моего массива путей в правильном порядке.Как сделать этот вывод в обратном направлении

public void printThePaths(int v) { 
    for(int i = 0; i < path.length;i++){ 
     System.out.println("From " + v + " to " + i); 
     int n = i; 
     while(n != -1) { 
      System.out.print(n); 
      n = path[n]; 
     } 
     System.out.println(); 
     //System.out.print(path[i] + ", "); 
    } 
    System.out.println(); 
}//end 

На данный момент массив путей выглядит следующим образом:

path[] = {3,5,4,-1,4} 

Так что, когда я запускаю мой метод printThePaths он выдает так:

From 4 to 0 
0324 
From 4 to 1 
154 
From 4 to 2 
24 
From 4 to 3 
324 
From 4 to 4 
4 
From 4 to 5 
54 

Ну пути печати в обратном направлении и мне интересно, как лучше всего будет напечатать их в противоположном направлении (ака от 4 до 0 будет: 4, 3, 2, 0). Просто, чтобы все понимали, число внутри индекса является родителем этого индекса.

ответ

2

Рекурсия!

В вашем методе, замените цикл while с:

printPath(i); 

Затем добавить этот метод:

void printPath(int n) { 
    if (n != -1) { 
     printPath(path[n]); 
     System.out.print(n); 
    } 
} 
+0

о вау рекурсии! Можете ли вы объяснить мне, как вы к этому пришли ?! Они не учили нас достаточно о рекурсии. Id действительно хотел бы знать ваш мыслительный процесс. – Spire

+0

Чтобы напечатать путь в обратном порядке, вам нужно распечатать все, кроме первого элемента в обратном порядке (рекурсивный вызов), а затем напечатать первый элемент. И если путь пуст, делать нечего. –

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