Tengo una función de recursión simple que devuelve la suma de los primeros n elementos de la matriz. Tengo un poco de dificultad para entender: cuando la función se llama a sí misma a través de return return sum(arr, n-1) + arr[n-1]; qué hace realmente esta sum(arr, n-1) ya que finalmente no se agrega a la suma final y por qué no se ha calculado.
Aquí está toda la función, realmente agradezco cualquier explicación.
function sum(arr, n) { if (n === 0) { return 0; } else if (n >= 1) { return sum(arr, n - 1) + arr[n - 1]; } }En una función recursiva, desea comenzar con la declaración de retorno de salida, que en este caso es cuando la matriz está vacía.
// if the array is empty, return the total. if(!arr.length) return total;Si tenemos más elementos, extraiga el elemento superior y agréguelo al total. Hacer estallar devuelve el último elemento y lo elimina de la matriz.
total += arr.pop();Luego devolvemos la función recuperada y le pasamos los parámetros actualizados.
return sum(arr, total); function sum(arr = [], total = 0) { if (!arr.length) return total; total += arr.pop(); return sum(arr, total); } console.log(sum([1, 2, 3]))