Autor Tema: Multiplicacion de dos números o valores enteros con recursividad. Matrices  (Leído 4580 veces)

juice

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Hola, mi pregunta sería ¿Como hago para resolver H^m siendo H una matriz NxN y m el exponente de la matriz, utilizando solo recusividad?

¿Cómo hago para hacer un programa que genere una matriz (de manera recursiva) y sea elevada a una potencia, de manera que se multiplique por ella misma (de manera recursiva), es decir, Matriz H, H^n -> (HxHx...xH) y que además cuando termine de multiplicarse pueda aumentar su tamaño (de manera recursiva) para generar otra y hacer la multiplicacion nuevamente? Por ejemplo:

Matriz H 3x3 -> H^2 luego de  su tamaño aumenta en 2
Matriz H 5x5 -> H^2
Matriz H 7x7 -> H^2
(SIN CICLOS REPETITIVOS, UNICAMENTE RECURSIVIDAD)

de ser posible en lenguaje java o alguno que se parezca por favor.

hasta ahora solo he conseguido generar la matriz asi, agradezco su ayuda

Código: [Seleccionar]
import java.util.Scanner;

public class Recursividad {

    int i = 0, j = 0, N = 3;
    Scanner n = new Scanner(System.in);

    int matriz[][] = new int [N][N];

    public void matriz_generada() {
            filas();
    }

    public void filas() {

        if (i < N) {
            columnas();
            System.out.println("");
            i = i + 1;
            filas();
        }

    }

    public void columnas() {
       
        if (j < N) {
            matriz[i][j] = (int) (Math.random() * 10);
            System.out.print("[" + matriz[i][j] + "]");
            j = j + 1;
            columnas();
        }
       
        j = 0;
    }
}
« Última modificación: 30 de Marzo 2021, 19:32 por Ogramar »

System.out.println(User);

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Re: Multiplicacion de Matriz con Recursividad
« Respuesta #1 en: 17 de Noviembre 2020, 21:38 »
Hola juice.
Te adjunto en este mensaje, un método que multiplica dos números/valores enteros (tanto positivos como negativos), de forma recursiva.
No sé si se podría "traducir" y adaptarlo en base de las especificaciones de tu programa con matrices, pero igual te puede ayudar.
Un saludo.

Código: [Seleccionar]
  static int multiplicar (int x, int y)
  {
    if (x == 0 || y == 0)
    {
        return 0;
    }
    else if (y < 0)
    {
      return -x + multiplicar (x, y + 1);
    }
    else
    {
      return x + multiplicar (x, y - 1);
    }
  }

juice

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Multiplicacion de matrices
« Respuesta #2 en: 20 de Noviembre 2020, 05:43 »
¿Como puedo multiplicar 2 matrices nxn utilizando solo recursividad? (la matriz ya fue generada aleatoriamente en otra clase, es decir, necesito usar la matriz de la clase donde fue creada y multiplicarla por si misma en otra clase utilizando recursividad).

este es el codigo para que vean las variables :|

Código: [Seleccionar]
int N = 5, i, j;
        double matriz[][] = new double[N][N];

        for (i = 0; i < N; i++) {
            for (j = 0; j < N; j++) {
                matriz[i][j] = (int) (Math.random() * 10);
                System.out.print("[" + matriz[i][j] + "]");
            }
            System.out.println("");
        }

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 983
    • Ver Perfil
Re: Multiplicacion de matrices
« Respuesta #3 en: 20 de Noviembre 2020, 11:58 »
Por la red he encontrado este código, mira a ver si te sirve:

Código: [Seleccionar]
public class multiMatrizRecursivo {
 
   public void multiplicacionMatriz(int [][] A,int [][] B)
   {
       if (A[0].length==B.length)
 
       {
           int[][] C = new int[A.length][B[0].length];
           multiplicacionMatriz(A, B, C, 0);
           imprimir(C);
       }else
       {
           System.out.println("Matrices ingresadas no son compatibles");
       }
   }
 
   private void multiplicacionMatriz(int [][] A,int [][] B,int [][]C,int i)
   {
 
       if (i<A.length)
       {
           multiplicacionMatriz(A,B,C,i,0);
           multiplicacionMatriz(A,B,C,i+1);
       }
   }
 
   private void multiplicacionMatriz(int [][]A,int [][]B,int [][]C,int i,int j)
   {
       if (j<B[0].length)
       {
           multiplicacionMatriz(A,B,C,i,j,0);
           multiplicacionMatriz(A,B,C,i,j+1);
       }
   }
 
   private void multiplicacionMatriz(int [][]A,int [][]B,int [][]C,int i,int j,int k)
   {
       if (k<A[0].length)
       {
           C[i][j] += A[i][k] * B[k][j];
           multiplicacionMatriz(A,B,C,i,j,k+1);
       }
   }
 
   public void imprimir(int [][] C)
   {
 
       for (int i=0;i<C.length;i++)
       {
           for(int j=0;j<C.length;j++)
           {
               System.out.print("["+C[i][j]+"]");
           }
           System.out.println();
       }
   }
 
}




« Última modificación: 30 de Marzo 2021, 19:39 por Ogramar »
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".