Прежде чем пытаться решить эту проблему с помощью рекурсии, попробуйте сначала представить это.
Дано (1) -> (2) -> (3) ->
Инициализировать 3 переменные prev =ноль;cur = 1;next = 2;
Теперь, чтобы изменить это, начните с текущего узла, он должен указывать на предыдущий, но при этом мы теряем связь между 1 и 2. Чтобы сохранить связь следующей = 2. Теперьтекущая 1 теперь может указывать на предыдущее значение, т.е. cur.next = prev.
Так что теперь у нас есть <- (1) (2) -> (3) ->
Затемперейдите к следующей итерации, вам просто нужно обновить prev = cur и cur = next.
Повторяя это до тех пор, пока не достигнете нуля, связанный список обновляется таким образом.
<- (1) <- (2) (3) ->
<- (1) <- (2) <- (3) </p>
Так что это можно сделать с помощью цикла while, подобного этому
Node prev = null;
Node cur = node;
Node next;
while (cur != null) {
next = cur.next;
cur.next = prev;
prev = cur;
cur = next;
}
return prev;
Теперь, чтобы сделать это с помощью рекурсии, вам просто нужно иметь 3 параметра, то есть prev, cur и next.Определите ваш базовый случай (что должна делать функция, когда она достигает нуля).Затем выполните 4 строки кода внутри цикла while, затем вызовите рекурсивную функцию.