ExpertiDict

JavaScript · Avançado · Português · Técnico

trampolim

/tɾɐ̃põˈlĩ/substantivo

Padrão que troca recursão por um laço: a função devolve outra função, em vez de se chamar. Evita estourar a pilha, pois quase nenhum motor otimiza chamadas finais.

Onde usar

Usado em recursões muito profundas, como percorrer uma lista com milhares de elementos. Em code review, costuma ser melhor trocar por um laço, mas o trampolim preserva o estilo recursivo.

Em código

const tramp = (f) => (...a) => {
  let r = f(...a);
  while (typeof r === 'function') r = r();
  return r;
};
const s = (n, acc = 0) =>
  n ? () => s(n - 1, acc + n) : acc;
console.log(tramp(s)(100000)); // 5000050000

Exemplos

Troquei a recursão por um trampolim para não estourar a pilha.

Cada passo devolve uma função, e o trampolim roda até sobrar um valor.

Cuidado

Usar recursão comum com cem mil níveis esperando que o motor otimize, o que termina em RangeError.

Sinônimos

trampoline

Veja também

Todos os termos de JavaScript