recursividad

Iniciado por trueno_dp, 15 Junio 2011, 20:18 PM

0 Miembros y 1 Visitante están viendo este tema.

trueno_dp

Hola, no sé si estoy en el foro adecuado, pero estoy liao con java y la recursividad m mata, tengo que encontrar los divisores de un entero de forma recursiva y no tengo ni idea, tengo echo algo, pero vamos que no m funcion, a ver si alguien me puede ayudar gracias.


public static int recursividad(int numero){
   
     if(numero>2)
     {
       
        return 0;
     }else
     {
   
      
       return recursividad(numero%numero-1);
    }
 
  }

.rn3w.

#1
espero que te sirva es orientado a objetos pero lo podrias cambiar el code
a recursividad vale bye

public ArrayList<Integer> divisores(int numero){
    int cociente=1;
    int copia= numero/2;
   
   ArrayList<Integer>  arreglo= new ArrayList<Integer> ();
       while(cociente<= copia){
        if(copia%cociente==0){
            arreglo.add(cociente);
        }
        cociente++;
        }
        arreglo.add(numero);
    return arreglo;
    }

.rn3w.

solo ve el caso base y la parte recursiva

trueno_dp

pffff no me entero, perdona!!!
Gracias de todas maneras

barbieturico

#4
Lo primero, la condición para que una función sea recursiva es que se llame a sí misma.
Para hacer lo que dices es bastante fácil, aquí lo tienes hecho con recursividad:

Código (java) [Seleccionar]
public class Test {
    public static java.util.List<Integer> divisores = new java.util.ArrayList<Integer>();
   public static void recursivo(int numero, int i)   {
           if(i>0 && numero%i==0) {
               divisores.add(new Integer(i));
               System.out.println(i);
           }
           i++;
           if(i<=numero) Test.recursivo(numero, i);
   }
   public static void main(String[] args) throws IOException {
           Test.recursivo(1125,1);
   }
}