Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Programa recursivo en java!

Estas en el tema de Programa recursivo en java! en el foro de Java en Foros del Web. Ayuda con este codigo: A ver resulta que me han mandado un programa el cual haga tres metodos recursivos uno el de la raiz cuadrada ...
  #1 (permalink)  
Antiguo 12/10/2013, 10:58
 
Fecha de Ingreso: octubre-2013
Ubicación: Valencia
Mensajes: 5
Antigüedad: 10 años, 6 meses
Puntos: 0
Programa recursivo en java!

Ayuda con este codigo:
A ver resulta que me han mandado un programa el cual haga tres metodos recursivos uno el de la raiz cuadrada entera otro un metodo que diga si una matriz es simetrica o no y otro que diga si la matriz asociada a la raiz cuadrada entera es simetrica o no. Pues a ver mi problema esta en el tercer metodo que pienso que no tiene sentido hacerlo recursivo pero esque en el enunciado pone que tienen que ser recursivos lo metodos entonces alguien me puede ayudar o sugerir si se puede hacer recursivo o no ?
import java.util.Scanner;

public class Main implements RaizEnteraMatrizSimetricaIF {
// Inicializo la variable r

private static int r = 0;
private int iEsSim=0;
private int jEsSim=0;

public static void main(String[] args) {
// 1. Leo el tamaño de la matriz
//2. Almaceno los valores de los elementos de la matriz
Scanner leer = new Scanner(System.in);
int fila = leer.nextInt();
int[][] matriz = new int[fila][fila];
for (int i = 0; i < fila; i++) {
for (int j = 0; j < fila; j++) {
matriz[i][j] = leer.nextInt();
}
}
leer.close();
// 3.Creo un objeto de la clase Main para llamar al metodo
Main main = new Main();
//if( main.esSimetricaSuRaizCuadradaEntera(matriz)==true ){
if (main.esSimetrica(matriz) == true) {
System.out.println("SIMETRICA");
System.out.println("");
} else {
System.out.println("NO SIMETRICA");
System.out.println("");
}

}
// Metodo que calcula la raiz cuadrada de entera de un numero

public int raizCuadradaEntera(int n) {

//Precondicion n>=0
if (n >= 0) {
if (r == 0) {
r = n;
}
}
int result;
int nCuad = n * n; //equivale a Math.pow(r,2).
int nMas1Cuad = (n + 1) * (n + 1); // equivale a Math.pow(r+1,2).
if ((nCuad <= r) && (r < nMas1Cuad)) {
result = n;
r = 0;
} else {
//Llama a la funcion otra vez
result = raizCuadradaEntera(n - 1);
}
return result;
}


//Metodo para ver si es simetrica
public boolean esSimetrica(int[][] m) {

boolean result = m[iEsSim][jEsSim] == m[jEsSim][iEsSim];
if (result) {
jEsSim++;
if (jEsSim == m[iEsSim].length) {
iEsSim++;
jEsSim = 0;
}
if (iEsSim < m.length) {
result = esSimetrica(m);
}
}
return result;

}



//Metodo esSimetricaSuRaizCuadradaEntera
public boolean esSimetricaSuRaizCuadradaEntera(int[][] m) {

// Declaracion de la variable booleana para ver si se cumple
boolean secumple = true;
//Comprobacion de precondicion
for (int i = 0; i < m.length; i++) {
for (int j = 0; j < m.length; j++) {
if (secumple) {
secumple = m[i][j] >= 0;
}
}
}
///////////////////////////////
if (secumple) {
//Creamos la matriz de cuadrados
//La recorremos
for (int l = 0; l < m.length; l++) {
for (int h = 0; h < m.length; h++) {
//A continuación hago una llamada al metodo raizcuadradaEntera que me devolvera la raiz cuadrada de cada elemento de la matriz
// y se asigna a la matriz de cuadrados o de raiz cuadrada
m[l][h] = raizCuadradaEntera(m[l][h]);
}
}
} else {
//Si no se cumple la pre, devolvemos False
return false;
}
//Llamo al metodo esSimetrica que devolvera true o false y a la vez ese true o false sera devuelto por el metodo
//actualmente implementado
return esSimetrica(m);
}
}
  #2 (permalink)  
Antiguo 12/10/2013, 19:40
 
Fecha de Ingreso: agosto-2011
Ubicación: Madrid
Mensajes: 185
Antigüedad: 12 años, 7 meses
Puntos: 29
Respuesta: Programa recursivo en java!

Como consejo, usa las etiquetas de formato de código para poder leerlo correctamente
__________________
www.sttorybox.com , el lugar de las historias :)
  #3 (permalink)  
Antiguo 13/10/2013, 06:51
 
Fecha de Ingreso: marzo-2012
Ubicación: Argentina
Mensajes: 111
Antigüedad: 12 años, 1 mes
Puntos: 12
Respuesta: Programa recursivo en java!

Hola;

1º No tiene mucho sentido ya hiciste dos metodos recusivos y ahora lo que haces en el tercero es llamar a los anteriores, a veces los profesores son así.

2º Cuando tenes una expresion condicional como la siguiente

Código PHP:
if (main.esSimetrica(matriz) == true) {
    
System.out.println("SIMETRICA");
    
System.out.println("");

Podés ponerla así
Código PHP:
if (main.esSimetrica(matriz) ) {
    
System.out.println("SIMETRICA");
    
System.out.println("");

Y la evluacion se hace igual o sea ,
si es == true ò == false

3º Lo que se me ocurre que podés variar en el tercer punto ,es recorrer la matriz en forma recursiva, ya que si lo haces con un for podés transformar eso a unas cuantas llamadas recursivas.

4º De pura curiosidad ,¿ Por qué en Java ?, me parece que estaría más bueno hacerlo en C o Pascal.

Saludos
  #4 (permalink)  
Antiguo 13/10/2013, 17:35
 
Fecha de Ingreso: octubre-2013
Ubicación: Valencia
Mensajes: 5
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Programa recursivo en java!

Hola, lo primero muchas gracias por el consejo y por responder y bueno sobre lo de java es que la asignatura es programacion II y es sobre java el profe pide java, y bueno busque alguna forma de resolver la recursividad en el tercer método y di con ella ya , muchas gracias saludos!

Etiquetas: clase, metodo, programa, recursivo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:11.