Java 如何使此输出向后

Java 如何使此输出向后,java,arrays,graph,while-loop,Java,Arrays,Graph,While Loop,因此,我编写了一个用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) {

因此,我编写了一个用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
因此,当我运行PrintThePath方法时,它的输出如下:

path[] = {3,5,4,-1,4}
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)。大家都知道,索引中的数字是该索引的父项

递归

在您的方法中,将
while
循环替换为:

printPath( i );
然后添加该方法:

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

哇,递归!你能解释一下你是怎么做到的吗?!他们没有教我们足够的递归知识。。我真的很想知道你的思维过程要反向打印路径,你需要反向打印除第一项(递归调用)之外的所有内容,然后打印第一个元素。如果路径是空的,就没有什么可做的。