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.

Estoy trabajando en el problema clásico de recursión de contar escalones dando uno o dos pasos… pero tengo que imprimir cada combinación.

La premisa básica es dada una cantidad ‘n’ de escalones, encontrar todas las combinaciones posibles tomando 1 ó 2 escalones a la vez. Como pasé mucho tiempo aprendiendo cómo resolver la secuencia de Fibonacci con recursión, noté instantáneamente la similitud entre los dos problemas. Descubrí cómo resolver el número de combinaciones… pero estoy completamente atrapado cuando intento averiguar cómo mostrar cada combinación posible.

Aquí está la solución que he encontrado…

function countWaysToReachNthStair(n) {
if (n === 1) { return 1; }
if (n === 2) { return 2; }

return countWaysToReachNthStair(n-1) + countWaysToReachNthStair(n-2)
}

console.log(countWaysToReachNthStair(4));

Cada vez que trato de agregar cosas a una matriz en la salida, obtengo un error. Cualquier consejo o truco sería muy apreciado…

El resultado esperado al llamar a

countWaysToReachNthStair(4)

sería

5 ((1, 1, 1, 1), (1, 1, 2), (2, 1, 1), (2, 2))

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Aquí hay una solución que dará como resultado cada combinación posible:

    function countWaysToReachNthStair(n, steps = []) {
      if (n === 0) {
        console.log(steps);
        return 1;
      }
      if (n < 0) {
        return 0;
      }
    
      return countWaysToReachNthStair(n-1, [...steps, 1]) + countWaysToReachNthStair(n-2, [...steps, 2]);
    }
    
    console.log(countWaysToReachNthStair(4));
    

    El resultado esperado de llamar a

    countWaysToReachNthStair(4)
    

    sería

    [1, 1, 1, 1]
    [1, 1, 2]
    [1, 2, 1]
    [2, 1, 1]
    [2, 2]
    5
    

Comments are closed.