想知道为什么IF条件下k值不同

时间:2019-01-18 21:14:19

标签: java

我正在学习编码面试。因此,我正在尝试解决“破解编码面试”一书中的问题

这是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;
}

1 个答案:

答案 0 :(得分:0)

因为在一行

int index = printKthToLast(head.next, k) + 1;

您将1添加到下一个呼叫的结果。因此,对printKthToLast的最后一次调用将返回0,倒数第二个将返回1,倒数第三个2,依此类推。