【发布时间】:2013-03-04 09:25:35
【问题描述】:
对不起,如果这是一个非常基本的问题,我只是想学习递归。
下面的代码可以反转一个链表。
我理解第 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 行将如何运行。第 2 行是基本情况,它返回一些东西,所以第 3 行将一直阻塞,直到它返回一些东西。是否有一些不明显的线程正在发生?
-
谢谢,但我还是不确定。为问题 +1。
-
我会用简单的例子来介绍代码。首先,有一个空列表。然后,使用一个包含一个元素的列表。然后,使用包含两个元素的列表。如果你明白这一点,你应该能够理解所有这些。
标签: recursion singly-linked-list