Função recursiva de otimização de chamada de cauda
Esta é uma função que nivela profundamente uma matriz
const deepFlatten = (input) => {
let result = [];
input.forEach((val, index) => {
if (Array.isArray(val)) {
result.push(...deepFlatten(val));
} else {
result.push(val);
}
});
return result;
};
Durante uma discussão, disseram-me que não é eficiente em termos de memória, pois pode causar estouros de pilha.
Eu li emhttp://2ality.com/2015/06/tail-call-optimization.html que eu poderia potencialmente reescrevê-lo para que seja editado por TCO.
Como isso seria e como eu poderia medir o perfil de uso da memória?