Pirámide de dígitos programación recursiva (Java)

 



Problema:
 
Escribir un proceso recursivo que muestre una media pirámide de dígitos como se muestra en la siguiente figura: 

 1

 21 

 321 

 4321 

 54321 

 654321 

 7654321 

 87654321 

 987654321

para desarrollar este problema es necesario realizarlo en dos partes.

la primera parte es la que va a realizar cada piso de la pirámide y la segunda parte es la que va a llenar la pirámide con los dígitos como se muestra a continuación: 

    public static void main(String[] args) {

        
        piramide(5);
        
    }
    
    public static void
piramide(int pisos){
        if (pisos==0){
            return;
        }
        piramide( pisos-1);
        System.out.println(estructura(pisos));
    }
    
    public static int
estructura(int a){
        if (a==1){
            return 1;
        }
        return a * (int)Math.pow(10, a-1) + estructura(a - 1);
    }

la pirámide recorre cada piso y la estructura se encarga de generar los dígitos en cada piso

El metodo piramide se encarga de imprimir la pirámide de forma recursiva:
  • Si el número de pisos es 0, la función termina (condición base).
  • Si hay pisos por construir, primero llama recursivamente a piramide(pisos - 1), lo que asegura que primero se impriman los pisos inferiores antes de imprimir el piso actual.
  • Después de la llamada recursiva, imprime el resultado de estructura(pisos), que es el valor numérico para ese piso.

  • El metodo estructura genera el número que corresponde a cada piso de la pirámide
  • Si el valor de a es 1, devuelve 1 (condición base).
  • Si a es mayor que 1, genera un número que comienza con a seguido de a-1 números, formando así un "nivel" de la pirámide. Lo hace multiplicando a por 10 elevado a la potencia a-1 (lo que desplaza a a a la izquierda), y sumándole el resultado de estructura(a - 1) (el nivel inferior).

  • Comentarios

    Entradas populares de este blog

    Calculo Numérico (Oscar Zabalaga Montaño)

    Potencia de un numero programacion recursiva (Java)

    Teoria de Automatas (Victor Hugo Montaño)