No puedo resolver un problema. Tenemos una matriz. Si tomamos un valor, su índice significa ID de puerto, y el valor en sí significa la ID de otro puerto al que está conectado. Necesita encontrar el índice de inicio de la conexión secuencial más larga al elemento cuyo valor es -1.
Hice una explicación gráfica para describir el caso de la matriz [2, 2, 1, 5, 3, -1, 4, 5, 2, 3]. En la imagen, la conexión más larga es violeta (3 segmentos).

Necesito hacer una solución mediante una función getResult(connections) con un solo argumento. No sé cómo hacerlo, así que decidí devolver otra función con varios argumentos que me permitan hacer una solución recursiva.
function getResult(connections) { return f(connections.findIndex(e => e === -1), connections, 0, []); } function f(index, cnx, counter, branches) { counter++; for (let i = 0; i < cnx.length; i++) { if (cnx[i] === index) { branches.push([i, counter]); return f(i, cnx, counter, branches); } } return branches.sort((a, b) => b[1] - a[1])[0][0]; } console.log(getResult([1, 2, -1])); // expected 0 console.log(getResult([1, -1, 1, 2])); // expected 3 console.log(getResult([2, 1, -1])); // expected 0 console.log(getResult([3, 4, 1, -1, 3])); // expected 2 console.log(getResult([1, 0, -1, 2])); // expected 3 console.log(getResult([3, 2, 1, -1])); // expected 0 console.log(getResult([2, 2, 1, 5, 3, -1, 4, 5, 2, 3])); // expected 6De todos modos, el código no funciona completamente correctamente. ¿Podría explicar mis errores? ¿Es posible resolver el problema mediante una función con solo un argumento original?