Cantidad de lineas para Construir Hexágono de Crecimiento Recursivo (Java)



Problema 
Se pide disenar proceso(s) recursivo(s) necesario(s) para encontrar la cantidad de lineas que se requieren para construir hexagonos de crecimiento de nivel n, como se muestra en la siguiente figura.


Si construimos un nivel mas:

De este nuevo nivel podemos inferir que existe una cantidad de bloques fijos que son representados por el color verde, y en color rojo están la cantidad de hexágonos que se añade en cada nivel. Para formar un nuevo nivel no son necesarios los 6 lados del hexágono, por esta razón los hexágonos en verde pueden ser formados por 4 lados (quitando 1 base y 1 lateral) y los que están en rojo por 3 (quitando 2 bases y 1 lateral).


    public static void main(String[] args) {        
       
       System.out.println(hexagono(2));
    }
 
    public static int hexagono(int nivel){
        if (nivel==1){
            return 6;
        }
        return hexagono(nivel-1)+6*4+(nivel-2)*6*3;
    }

El método  hexagono (int nivel) es un método es recursivo y calcula cuántos bloques hay en un hexágono de un nivel dado:

  • Condición base: Si nivel == 1, el método retorna 6, ya que un hexágono de nivel 1 tiene 6 bloques. Estos representan una célula central rodeada de 6 bloques, lo que forma el hexágono más básico.
  • Caso recursivo: Si el nivel es mayor que 1, la función llama a sí misma recursivamente para calcular el número de bloques del nivel anterior (hexagono(nivel - 1)) y luego añade los bloques correspondientes al nivel actual.
La fórmula para sumar los bloques del nivel actual es:

6 * 4 + (nivel - 2) * 6 *
3

Donde:

  • 6 * 4: Representa los bloques fijos que se añaden en la nueva capa externa del hexágono.
  • (nivel - 2) * 6 * 3: Representa el crecimiento adicional del hexágono en niveles sucesivos a partir del nivel 3 en adelante. Dado que este cálculo es para hexágonos más grandes, no aplica a niveles pequeños.


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)