Sto leggendo un libro di Algorithms e sto lavorando a una soluzione ricorsiva alla seguente domanda:
Implement a function to check if a linked list is a palindrome
Questo è un compito abbastanza facile, ma il libro suggerisce una soluzione ricorsiva che non riesco a spiegarmi. Afferma che per sapere quando siamo al centro dell'elenco collegato, possiamo eseguire la seguente operazione:
recurse(Node n, int length) {
if (length == 0 || length == 1) {
return [something]; // At middle
}
recurse(n.next, length - 2);
...
}
Perché length - 2
ti riporta ricorsivamente al centro? Qualcuno può spiegarlo in dettaglio? Capisco che funzioni, ma non matematicamente perché funzioni.