Ejercicios propuestos y resueltos de recursividad Java

Hola a todos, hoy os dejo una serie de ejercicios de Java para practicar todo aquello que hemos explicado en anteriores posts.


Todos los ejercicios que proponemos están resueltos en este mismo post, intenta hacerlo por ti mismo y si te quedas atascado puedes mirar la solución. Recuerda, que no tiene por que estar igual tu solución con la del post, el objetivo es que aprendas no que me copies la solución.

Te recomiendo que uses mensajes de trazas, donde te sean necesarios. Si tienes problemas también puedes usar el depurador.

Aquí tienes todos los posts relacionados con Java:

Curso Java

Si tienes alguna duda, recuerda que puedes consultarnos escribiendo un comentario en este post o enviándonos un e-mail a administrador@discoduroderoer.es

1. Sumar los números números naturales hasta N (se lo damos nosotros) de forma recursiva.

Spoiler Inside SelectShow>


2. Factorial de un número.
Spoiler Inside SelectShow>

3. Recorrer un array de forma recursiva.

Spoiler Inside SelectShow>

4. Buscar un elemento de un array de forma recursiva.
Spoiler Inside SelectShow>

5. Recorrer una matriz de forma recursiva.

Spoiler Inside SelectShow>




6. Calcular el valor de la posición fibonacci usando recursividad.
Spoiler Inside SelectShow>

7. Invertir un numero de forma recursiva (no usar String)

Spoiler Inside SelectShow>




8. Invertir una palabra de forma recursiva
Spoiler Inside SelectShow>

9. Calcula la potencia de un numero de forma recursiva, tanto para exponentes
negativos como positivos.

Spoiler Inside SelectShow>


10. Suma los digitos de un numero de forma recursiva.
Spoiler Inside SelectShow>

11. Haz una función que obtenga el maximo numero de un array, pasandole el array, el indice y el numero maximo actual.
Otra función sin que sea necesario el tercer parámetro.

Haz lo mismo con el mínimo.

Spoiler Inside SelectShow>

12. Usando el arbol de nuestro canal, cuenta recursivamente, cuantos nodos hay.

Spoiler Inside SelectShow>




13. Usando el arbol de nuestro canal, cuenta recursivamente, cuantas hojas hay (external).
Spoiler Inside SelectShow>

14. Usando el arbol de nuestro canal, guardar en una lista dinámica todos los números entre 2 números pasados por parámetro.

Spoiler Inside SelectShow>

15. Contar el números de nodos con un elemento en concreto.

Spoiler Inside SelectShow>

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

7 comentarios

  1. Reynaldo

    Saludos, me gustaría sugerir una solución alternativa al problema 7, pues con la solución actual tienen que iniciar sabiendo la longitud inicial del número, con está se puede devolver el número invertido sin necesidad de saber su longitud. Saludos.

    private static int invertirNum(int f, int r){
    return (f < 10)? r * 10 + f : A(f/10, r*10 + f%10);
    }

    public static void main(String[] args) {
    System.out.println(invertirNum(120003, 0));
    }

  2. rendis

    El ejemplo 11 puede resumirse mas, hacerlo solo pasando el arreglo.

    private static int getMax(int [] arr){
    return (arr.length == 0)? Integer.MIN_VALUE :
    Math.max(arr[0], getMax(Arrays.copyOfRange(arr, 1, arr.length)));
    }

    private static int getMin(int [] arr){
    return (arr.length == 0)? Integer.MAX_VALUE :
    Math.min(arr[0], getMin(Arrays.copyOfRange(arr, 1, arr.length)));
    }

    public static void main(String[] args) {
    int []arr = new int[]{2,5,9,6,156, 3,4,7,8,1,12,68,4,3};
    System.out.println(getMax(arr));
    System.out.println(getMin(arr));
    }

  3. Damiana

    Como harían para escribir una función recursiva que reciba un número natural n e imprima los n primeros números naturales(comenzando en uno) encolumnados. Por ejemplo: para n=4 debería imprimir
    1
    2
    3
    4

  4. Programacion Kernel

    Hola, vi que habia una alternativa para el ejercicio 7 para hacerlo sin la longitud del numero pero igualmente veo que hace uso de dos parámetros, acá dejo mi solución con uno solo:

    public static void main(String[] args) {

    int n=419;

    int r=DarVuelta(n);

    System.out.println(r);
    }

    public static int DarVuelta(int n){
    int i=n,j;

    if(n10){
    n=n/10;
    integrador++; //cuento la cantidad de ceros
    }

    n=i; //reestablezco el valor de N
    j=(int)(Math.pow(10, integrador)); // calculo el multiplicador con 10 elevado a la cantidad de ceros
    i=n%10; // extraigo el ultimo valor del actual n
    i=i*j; // multiplico ese valor por la cantidad de ceros

    return i+DarVuelta(n/10); // recursion

    }

  5. tamara

    Solución al ejercicio 7 con solo un parametro

    public static void invertirNumero(int numero){
    if (numero/10 > 0){
    System.out.print(numero%10);
    invertirNumero(numero/10);
    }else{
    System.out.println(numero%10);
    }
    }

  6. Mark Barrera

    Buen día, disculpen me podrían ayudar con el siguiente ejercicio de Java:

    Elabore un programa en Java que utilice un método recursivo para invertir una cadena de caracteres, así, por ejemplo: el usuario ingresa la palabra universidad y el método recursivo debe devolver dadisrevinu.

    El método que construirá se llamará invertir, devolverá y recibirá como parámetro un String.

  7. OSCAR MEZA

    EL EJERCICIO 15 NO TIENE SENTIDO PUES EN UN BINARYSEARCHTREE LOS ELEMENTOS NO SE REPITEN

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *