リンクリストの最初のK個のノードを逆順にするコードを書いています。Reversing first K nodes of Linked List,Why recursion executing twice for last iterationで解決された問題がありました。今は期待されていますが、変数を使用しようとするとリンクリストにループする"if"条件で "presentCounter"の代わりに "k"を指定した場合、その理由は何ですか?それを避ける方法は?再帰における変数の使用
/*
* Condition K <= Length of linked list.
* node = null
* nextNode headNode of the linked list
*/
public void reverseNode(Node node, Node nextNode, int k) {
int presentCounter = k;
if (k > 1) {
k = k - 1;
this.reverseNode(nextNode, nextNode.next, k);
}
if (presentCounter == 1) {
this.kNode = nextNode.next; // Saving K's Next Node
this.headNode = nextNode; // Setting K node as head node
}
if (node == null) {
nextNode.next = this.kNode;
} else
nextNode.next = node;
}