1

抱歉,如果这是一个非常基本的问题,我只是想学习递归。

下面的代码可以反转一个链表。

我理解第 3 行之前的逻辑,但我很困惑何时调用第 4 行,(n.next=prev)因为在执行此行之前再次调用该函数。

有人可以让我知道这个递归的流程吗?

 void reverse(node n, node prev) {
     if (n == null) { newroot = prev; return; }
     reverse(n.next, n);
     n.next = prev;
    }
4

1 回答 1

2

一旦n命中null 并反转函数return,它将从那里回溯到它的调用函数,一直到它的第一个调用函数。

更新:请参阅下面的评论以获得更完整的解释。

于 2013-03-15T15:36:27.090 回答