Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

288
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda