Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

180
Vistas
¿Cuál es la complejidad temporal total de esta función recursiva con operaciones anidadas?

Tengo la siguiente función recursiva de arriba hacia abajo que calcula todas las diferentes formas en que podemos sumar números a partir de numbers de manera que sean iguales a targetSum . Ahora estoy tratando de determinar exactamente la complejidad temporal de este problema.

 const allWays = (targetSum, numbers) => { const fn = (remainder, startIndex) => { if (remainder === 0) return [[]]; const result = []; for (let i = startIndex; i < numbers.length; i += 1) { const num = numbers[i]; if (remainder - num < 0) continue; const remainderWays = fn(remainder - num, i); const targetWays = remainderWays.map((way) => [num, ...way]); result.push(...targetWays); } return result; }; return fn(targetSum, 0); };

Si hacemos que m sea el tamaño de targetSum y que n sea la longitud de los numbers , entonces el árbol de recurrencia debería tener una altura de m y un factor de ramificación de n , lo que le da una complejidad de tiempo de O(n^m) .

Si bien entiendo que este factor exponencial dominará todas las demás complejidades de tiempo, aún me gustaría saber qué agregan .map y dos operadores de propagación al tiempo de ejecución.

Parece que no puedo entender cuál es la complejidad temporal de este

 const targetWays = remainderWays.map((way) => [num, ...way]); result.push(...targetWays);

debiera ser.

¡Cualquier ayuda es apreciada! Gracias.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Tanto para #map como para #push, la complejidad del tiempo sería O(o) ya que #map iterará a través de la lista/matriz y push agregará un elemento individual al final de la lista al iterar sobre targetWays . Así que ambos serían operación O(o) . (Considerando o es la longitud del tamaño del resultado)

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda