es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Combinaciones recursivas nCr en Java

Tengo una tarea de crear dos métodos recursivos (en Java) que calculen nCr. El primer método que escribí fue uno que utiliza el triángulo de Pascal. Funciona, el triángulo de Pascal es fabuloso.

Pero ahora tengo un problema ya que no puedo pensar/encontrar ninguna otra solución recursiva para escribir mi segundo método que calcula nCr. He intentado usar/escribir un método basado en encontrar el factorial, pero ese método falla cuando uso números grandes.

¿Alguien puede, por favor, darme algunos consejos, sugerencias, consejos sobre otras formas recursivas de calcular nCr?

¡Muchas gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, sugiero las siguientes soluciones recursivas para calcular nCr en Java:

    1. Enfoque recursivo utilizando la fórmula: nCr = n-1Cr-1 + n-1Cr.
    public static int nCr(int n, int r) {
       if (r == 0 || n == r)
           return 1;
       else
           return nCr(n - 1, r - 1) + nCr(n - 1, r);
    }
    
    1. Enfoque recursivo utilizando la memorización para almacenar los valores calculados previamente y evitar cálculos repetidos.
    public static int nCr(int n, int r, int[][] memo) {
       if (r == 0 || n == r)
           return 1;
       else if (memo[n][r] != 0)
           return memo[n][r];
       else {
           memo[n][r] = nCr(n - 1, r - 1, memo) + nCr(n - 1, r, memo);
           return memo[n][r];
       }
    }
    

    Ambos métodos recursivos son eficientes y pueden manejar números grandes sin bloquearse. Espero que esto te ayude a escribir tu segundo método para calcular nCr.

Comments are closed.