我正在研究算法,并在一段时间内仍在解决这一疑虑. 我理解递归背后的概念,但我不明白的是为什么下面的代码从链表的末尾开始计数:
public static int printKthToLast(LinkedListNode head, int k) {
if (head == null) {
return 0;
}
int index = printKthToLast(head.next, k) + 1;
if (index == k) {
System.out.println(k + "th to last node is " + head.data);
}
return index;
}
看:如果我想找出倒数第二项,而我的链表是{10,20,30,40},答案是30.但是,如果每次迭代都添加索引,则索引将为(2),然后结果为20.
我理解代码是(一些如何)从end开始的,这是有意义的,因为末尾第二项是30.但我不明白我从何说起"从头到尾".这是关于递归的一些东西,我还没有弄明白.