我正在学习编码面试。因此,我正在尝试解决“破解编码面试”一书中的问题
这是Github上的解决方案代码:https://github.com/careercup/CtCI-6th-Edition/blob/master/Java/Ch%2002.%20Linked%20Lists/Q2_02_Return_Kth_To_Last/QuestionA.java
能否请您告诉我为什么在printKthToLast(LinkedListNode head,0)的情况下,“ if”条件下k值可以为1?在printKthToLast方法中,k值为0(if条件除外)。
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;
}
答案 0 :(得分:0)
因为在一行
int index = printKthToLast(head.next, k) + 1;
您将1
添加到下一个呼叫的结果。因此,对printKthToLast
的最后一次调用将返回0
,倒数第二个将返回1
,倒数第三个2
,依此类推。