Ejercicios Recursivos en Java y sus Soluciones

<< < (10/10)

konika_bn:
Buenas, tengo que hacer este problema de forma recursiva. Sólo se me ocurre implementarlo, pero de forma normal, es decir sin recursión. Si me pudiérais ayudar os lo agradecería.

La factorización de números enteros consiste en descomponer un número compuesto (no primo) en divisores no triviales que cuando se multiplican dan el número original. Para nuestro propósito académico queremos implementar una función recursiva que devuelva el número de divisores distintos de un número dado. Por ejemplo, el número 20 tiene 6 divisores: 1, 2, 4, 5, 10 y 20.

chiche92:
Hola, estoy empezando con java estoy en primer año, tengo un problema de recursion que aún no pude solucionar y se me acaba el tiempo, si ustedes pudieran indicarme el camino o resolverlo me ayudarian mucho.

El ejercicio es el siguiente:

Escribir un método recursivo int vocales(String cd) para calcular el número de vocales de una cadena.

Muchas gracias..

abelvaldez:
Cita de: pixzeto en 11 Junio 2009, 02:03 am

Estuve practicando con estos ejercicios y parece que el método para invertir un número no funciona bien.

Por ejemplo, si le entregamos el 32, daría:
 2 + invertir(3)*10  =  2 + 3*10  =  32

Código:

    int invertir (int n)
    {
if (n < 10)         //caso base
   return n;
else
   return (n % 10) + invertir (n / 10) * 10;
    }


Pero lo hice así y funciona:
Código:

public int invertirNumero(int numero){
if(numero<10){
return numero;
}else{
int contador = 0;
int aux = numero;
while(aux/10!=0){
contador++;
aux = aux/10;
}
return (int)(Math.pow(10, contador))*(numero%10) + this.invertirNumero(numero/10);
}
}


Hola Aqui un aporte  :),
utilize String length para identificar el tipo de unidad (../centena/decena) en cada caso.

Código:

 int invertir(int n){

            if (n < 10)         //caso base
                return n;

            return invertir(n / 10) + (n % 10) * (int) Math.Pow(10, ((n + "").Length-1));          
            
        }

Y para fibonacci :

       Código:

int fibonaci(int [] array, int n) {

            if (array[n-1] > 0) {
                return array[n-1];
            }

            if (n == 1 || n == 2)
            {
                return 1;
            }
            else {

                var a = fibonaci(array ,n - 1);
                var b = fibonaci(array ,n - 2);
                var sum = a + b;
                array[n - 1] = sum;
                 return sum;
            }
        }

jaker250per:
10512[email][img]http://[youtube=640,360][youtube=640,360][s][s][sup][/sup][/s][/s][/youtube][/youtube][/img][/email][/sub][/sub][/tt][/font]

[/glow][/s][/i]ww

jaker250per:
int invertir (int n)
    {
 if (n < 10)         //caso base
     return n;
 else
     return (n % 10) + invertir (n / 10) * 10;
    }

if(numero<10){
   return numero;
  }else{
   int contador = 0;
   int aux = numero;
   while(aux/10!=0){
    contador++;
    aux = aux/10;
   }
   return (int)(Math.pow(10, contador))*(numero%10) + this.invertirNumero(numero/10);
  }
 }

Navegación

[0] Índice de Mensajes

[*] Página Anterior