很抱歉,如果这是一个非常基本的问题,我只是想学习递归。
以下代码可以反转链接列表。
我理解逻辑直到第3行,但是当第4行被称为(n.next=prev)
时我很困惑,因为在执行该行之前再次调用该函数。
有人能告诉我这次递归的流程吗?
void reverse(node n, node prev) {
if (n == null) { newroot = prev; return; }
reverse(n.next, n);
n.next = prev;
}
答案 0 :(得分:2)
只要 n 点击null
并反转函数return
,它就会从那里回溯到它的调用函数一直到它的第一个调用函数。
更新:有关更完整的说明,请参阅以下评论。