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.

Etiquetas

3 comments

  1. 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. 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. 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

Deja un comentario

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