Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: juice en 17 de Noviembre 2020, 16:21
-
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
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;
}
}
-
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.
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);
}
}
-
¿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 :|
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("");
}
-
Por la red he encontrado este código, mira a ver si te sirve:
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();
}
}
}