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

285
Vistas
¿Cómo puedo imitar un "operador de propagación" de Javascript en C#?

Estoy siguiendo un tutorial sobre programación dinámica en youtube para comprender más sobre las funciones recursivas, y estoy atascado donde se usa un operador de propagación.

Código en JavaScript

 const howSum = (targetSum, numbers) =>{ if(targetSum === 0) return []; if(targetSum < 0) return null; for(let num of numbers){ const remainder = targetSum - num; const remainderResult = howSum(remainder, numbers); if(remainderResult != null){ return [...remainderResult, num]; } } return null; };

Este es el código en C# donde intento replicar la función

 class HowSumSlow { static dynamic HowSum(int targetSum, int[] numbers) { if (targetSum == 0) return numbers; if (targetSum < 0) return null; foreach( var num in numbers){ var remainder = targetSum - num; int[] remainderResult = HowSum(remainder, numbers); if (remainderResult != null) { //Code here// } } return null; } static void Main(string[] arg) { int[] numbers = new int[] { 2, 3 }; Console.WriteLine(HowSum(7, numbers)); } }

EDITAR: ¿Debo usar un diccionario y usar una clave? No entiendo cómo solucionar este problema.

 static Dictionary<int, int[]> spread = new Dictionary<int, int[]>(); static dynamic HowSum(int targetSum, int[] numbers){ ... if(spread.ContainsKey(remainderResult)){ return spread[remainderResult]; } }

EDITAR:

 class HowSumSlow { static int[] HowSum(int targetSum, int[] numbers) { int[] empty = new int[] { }; if (targetSum == 0) return empty; if (targetSum < 0) return null; foreach( var num in numbers){ var remainder = targetSum - num; int[] remainderResult = HowSum(remainder, numbers); if (remainderResult != null){ return remainderResult.Append(num).ToArray(); } } return null; } static void Main(string[] arg) { int[] numbers = new int[] { 2, 3, 5 }; Console.WriteLine(String.Join(",", HowSum(8, numbers))); } }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No hay un operador de propagación en C#, puede usar el método Append en el espacio de nombres System.Linq . Como esto devuelve un IEnumerable<T> , también deberá llamar a ToArray() después.

Esta línea en JS

 return [...remainderResult, num];

Podría ser lo siguiente en C#

 return remainderResult.Append(num).ToArray();

Tenga en cuenta que su método siempre devuelve int[] o nulo, por lo que el tipo de retorno debe ser int[] no dynamic .

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