¿Cuál es el mejor algoritmo para sumar números en matrices anidadas?

Se me ocurrió una solución con complejidad de tiempo O (n), siendo n el número total de números en la matriz de entrada.

La solución es como:

  • Mantenga una variable de suma e inicialícela con 0.
  • Itere sobre cada elemento de la matriz y verifique si el elemento es un número o una matriz.
  • Si el elemento es un número, agréguelo a la suma, de lo contrario, si es una matriz, sume esa matriz y agréguela a la suma.

// Función principal
función main () {
var inputArray = [1,2, [3,4, [5, [6], 7], 8], 9,10]; // Entrada
console.log (nestedArraySum (inputArray));
}

// función nestedArraySum para realizar la suma
función nestedArraySum (arr) {
var sum = 0;
para (var i = 0; i <longitud de arr; i ++) {
if (typeof arr [i] === “número”) {// si el elemento es un número, agréguelo a la suma
suma + = arr [i];
}
sino if (Object.prototype.toString.call (arr [i]) === ‘[object Array]’) {// sino si es una matriz, llame de forma recursiva a la función nestedArraySum ()
sum + = nestedArraySum (arr [i]);
}
}
suma de retorno;
}

principal();

Cada elemento se visitará una vez, por lo tanto, la complejidad del tiempo es O (n).

Se editará si encuentro una mejor solución.