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

algoritmo recursivo en java

Estas en el tema de algoritmo recursivo en java en el foro de Java en Foros del Web. Implemente una función recursiva que reciba un array de enteros y devuelva la cantidad de múltiplos de siete en el mismo. public static int mult7Comun(int[] ...
  #1 (permalink)  
Antiguo 25/10/2011, 05:47
 
Fecha de Ingreso: julio-2008
Ubicación: Salto
Mensajes: 20
Antigüedad: 15 años, 10 meses
Puntos: 0
algoritmo recursivo en java

Implemente una función recursiva que reciba un array de enteros y devuelva la cantidad de múltiplos de siete en el mismo.

public static int mult7Comun(int[] a)

Necesito un algoritmo recursivo que que implemente este método...quien me ayudaaaaaa toy re trancado con el caso base ya que como lo veo yo un caso claro es cuando el array tiene un solo numero y ese numero puede ser múltiplo de 7 o no
si es multiplo de 7 retorno uno
sino retorno 0

el tema es buscar el siguiente caso base para que el algoritmo recursivo pueda avanzar asía el caso base
  #2 (permalink)  
Antiguo 25/10/2011, 15:45
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: algoritmo recursivo en java

Puedes hacerlo de dos maneras

1) Un método al que le pasas como parámetro un array y una posición, devuelve el número de múltiplos de siete.

2) Un método al que le pasas un array con un elemento menos que el anterior, devuelve el número de múltiplos de siete.

Como estamos hablando de recursividad, evidentemente el método debe llamarse a sí mismo y que exista una condición que le indique que debe dejar de llamarse.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 25/10/2011, 17:32
 
Fecha de Ingreso: julio-2008
Ubicación: Salto
Mensajes: 20
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: algoritmo recursivo en java

mira esto es lo que estoy programando pero no me esta andando la recurcion


private static int multiplo7(int[]a)
{
return multiplo7Aux(0,a);
}
public static int multiplo7Aux (int desde,int []a ){


if(desde==a.length-1){

if(a[desde] % 7 ==0){
return 1;
}
else{
return 0;
}
}
int cont = multiplo7Aux(desde+1,a);

if(a[desde] % 7 ==0){
cont++;
return cont;

}
else{
return 0;

}



}
  #4 (permalink)  
Antiguo 26/10/2011, 01:47
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: algoritmo recursivo en java

Solo tienes un fallo, fíjate que cuando un valor no es múltiplo de 7, desprecias todos los siguientes devolviendo 0.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #5 (permalink)  
Antiguo 26/10/2011, 04:23
 
Fecha de Ingreso: julio-2008
Ubicación: Salto
Mensajes: 20
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: algoritmo recursivo en java

si me doy cuenta de lo que me decis pero no encuentro la solucion que modificacion me recomendarias para poder solucionarlo??? dame una manoq ue estoy perdidaso
  #6 (permalink)  
Antiguo 26/10/2011, 04:44
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: algoritmo recursivo en java

if(a[desde] % 7 ==0){
cont++;
return cont;

}
else{
return cont;

}
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #7 (permalink)  
Antiguo 26/10/2011, 05:02
 
Fecha de Ingreso: julio-2008
Ubicación: Salto
Mensajes: 20
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: algoritmo recursivo en java

hice la modificacion que me pasaste pero me sigue debolviendo uno se ve que tengo un error al ir devolviendo los valores de recurrcion por que no se acumulan al contador tendria que retornarme con esta prueba 3 y me sige dando uno......Alguna idea de como solucionar esto????


public static void main(String[] args) {


int[] numeros ={9,7,14,21 };

int num=multiplo7(numeros);

System.out.println("primos: "+num);


}
private static int multiplo7(int[]a)
{
return multiplo7Aux(0,a);
}
public static int multiplo7Aux (int desde,int []a ){


if(desde==a.length-1){
if(a[desde] % 7 ==0){
return 1;
}
else{
return 0;
}
}
int cont = multiplo7Aux(desde+1,a);

if(a[desde] % 7 ==0){
return cont++;

}
else{
return cont;

}
}
  #8 (permalink)  
Antiguo 26/10/2011, 06:42
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: algoritmo recursivo en java

Fíjate que has cambiado el código.

Cita:
f(a[desde] % 7 ==0){
cont++;
return cont;
ahora lo has convertido en

Cita:
if(a[desde] % 7 ==0){
return cont++;

}
Por lo tanto está diciéndole que te devuelva cont, y después le sume uno, cuando antes le sumabas uno y devolvías cont.

La diferencia está en donde colocas el ++

Prueba

int a = 0
System.out.println(++a)
int b= 0
System.out.println(b++)

y verás la diferencia
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #9 (permalink)  
Antiguo 26/10/2011, 06:58
 
Fecha de Ingreso: julio-2008
Ubicación: Salto
Mensajes: 20
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: algoritmo recursivo en java

si eso lo savia pero le cambie tantas cosas al código que me marie ahí muy buena observación muchas gracias ahora si quedo bien y da perfecto!!!

ahora luchare para hacer lo mismo pero con un algoritmo divide y vencerás haber si me sale jejeje
  #10 (permalink)  
Antiguo 26/10/2011, 07:55
 
Fecha de Ingreso: julio-2008
Ubicación: Salto
Mensajes: 20
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: algoritmo recursivo en java

mismo problema pero con un algoritmo del tipo divide y conquistar ....no me doy cuenta como chequiar las condiciones para poder usarlas depues que las divido...alguna sugerencia??




private static int multiplo7DyC(int[]a)
{
return multiplo7AuxDyC(0,a.length-1,a);
}
public static int multiplo7AuxDyC (int desde,int hasta,int []a ){


if(desde==hasta){
if(a[desde] % 7 ==0){
return 1;
}
else{
return 0;
}
}
int medio = (desde + hasta) / 2;
int m1 = multiplo7AuxDyC( desde, medio,a);
int m2 = multiplo7AuxDyC( medio + 1, hasta,a);
int cont=0;


if(a[desde] % 7 ==0){
cont++;
return cont;

}
else{
return cont;

}
}

Etiquetas: recursivo, algoritmos
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 08:32.