0% encontró este documento útil (0 votos)
424 vistas8 páginas

Ejercicios Recursivos en Java

El documento presenta 21 ejercicios de programación recursiva con sus respectivas funciones en Java. Los ejercicios incluyen funciones para saludar varias veces, realizar tablas de multiplicar, invertir vectores, ordenar arreglos, sumar elementos de vectores y listas, determinar si un número es primo, y calcular factoriales de manera recursiva.

Cargado por

David Merchan
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
424 vistas8 páginas

Ejercicios Recursivos en Java

El documento presenta 21 ejercicios de programación recursiva con sus respectivas funciones en Java. Los ejercicios incluyen funciones para saludar varias veces, realizar tablas de multiplicar, invertir vectores, ordenar arreglos, sumar elementos de vectores y listas, determinar si un número es primo, y calcular factoriales de manera recursiva.

Cargado por

David Merchan
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

package model;

import java.util.ArrayList;
import java.util.LinkedList;

public class Ejercicios


{
// 1.Programa que salude 10 veces
public void ejercicio1 (int n, int contator)
{
if (contator == n)
{
return;
}

System.out.println("Hi");
ejercicio1(n, contator + 1);
}

// 2.Programa que realice la tabla de multiplicar de un numero dado


// y muestre el resultado en la misma función.
public void ejercicio2 (int n, int contator)
{
if (contator == 11)
{
return;
}

int temp = 0;
temp = contator * n;
System.out.println(n + " X " + contator + " = " + temp);
ejercicio2(n, contator + 1);
}

// 3.Realice una función recursiva que dado un vector lo invierta


//en uno nuevo.
public void ejercicio3 (int []array, int []temp, int contator)
{
if (contator == array.length)
{
return;
}

temp[contator] = array[array.length - contator - 1];


ejercicio3(array, temp, contator + 1);
}

// 4.Escriba una función recursiva que ordene de menor a mayor un


// arreglo de enteros, utilice cualquier método de ordenamiento
// (burbuja o quicksort)
public void ejercicio4 (int []array, int n)
{
if (n == 1)
{
for (int i : array)
{
System.out.println(array[i]);
}
return;
}

for (int i = 0; i < n-1; i++)


{
if (array[i] > array[i + 1])
{
int temp = array[i + 1];
array[i + 1] = array[i];
array[i] = temp;
}
}

ejercicio4(array, n-1);
}

// 5.Realice una funcion recursiva que imprima los datos de un vector


public void ejercicio5 (int []array, int n)
{
if (n == array.length)
{
return;
}

System.out.println(array[n]);
ejercicio5(array, n + 1);
}

// 6.Realice una funcion recursiva que imprima los datos de una


//lista
public void ejercicio6 (LinkedList<String> stack, int n)
{
if (n == stack.size())
{
return;
}

System.out.println(stack.get(n));
ejercicio6(stack, n + 1);
}

// 7.Realice una funcion recursiva que imprima los datos de un Arraylist


public void ejercicio7 (ArrayList<Integer> array, int n)
{
if (n == array.size())
{
return;
}

System.out.println(array.get(n));
ejercicio7(array, n + 1);
}

// 8.Escribir un programa que retorne la suma de los enteros positivos pares


desde
//N hasta 2. Chequear que si N es impar se guarde en una lista un mensaje de
error
//por cada número impar.
public int ejercicio8 (int n, LinkedList<String> stack)
{
if (n < 2) return 0;

if ((n % 2) != 0)

stack.add("Error");

int temp = ejercicio8(n - 1, stack);

if ((n % 2) == 0)

temp += n;
return temp;
}

// 9.Programe un método recursivo que retorne la suma de un arreglo de números


enteros.
public int ejercicio9 (int []array, int n)
{
if(n == array.length) return 0;

int temp = ejercicio9(array, n + 1);


temp += array[n];
return temp;
}

// 10. Programe un método recursivo que invierta los números de una lista de
//enteros en otra lista (retorne la lista nueva).

public LinkedList<Object> ejercicio10 (LinkedList<Integer> stack, int n)


{
if (n == stack.size()) return new LinkedList<>();

LinkedList<Object> temp = ejercicio10(stack, n + 1);


temp.add(stack.get(n));
return temp;
}

// 11.Programar un algoritmo recursivo que permita invertir un número.


Ejemplo: Entrada:123 Salida:321
public String ejercicio11 (int a, int n)
{
String temp = Integer.toString(a);
if (n == temp.length()) return "";

String number = ejercicio11(a, n + 1);


number = number + temp.charAt(n);
return number;
}

// 12.Programar un algoritmo recursivo que retorne la suma los elementos de


una matriz
// public int ejercicio12 (int [][] m, int i, int j)
// {
//// if (i == m.length & j == m[i].length) return 0;
////
//// if (j == m[i].length)
//// {
//// int temp = eje
//// }
////
// }

// 13.Programar un algoritmo recursivo que retorne el número menor de un


vector.
public int ejercicio13 (int []array, int n, int menor)
{
if(n == array.length) return 0;

menor = ejercicio13(array, n + 1, menor);

if (array[n] < menor)


{
menor = array[n];
}

return menor;
}

// 14.Una función recursiva que me retorne cuantas veces se repite un numero


en específico en un vector.
public int ejercicio14 (int []array, int n, int a)
{
if (n == array.length) return 0;

int temp = ejercicio14 (array, n + 1, a);

if (array[n] == a)
{
temp++;
}

return temp;
}
public int veces (int n)
{
int x = 0;
for (int i = 1; i <= n; i++)
{
if ((n % i) == 0)
{
x++;
}
}

return x;

// 15.Indicar si un número es primo.


public String ejercicio15 (int a, int n)
{
if (n == a) return "";

String message = ejercicio15(a, n + 1);


if (veces(a) == 2)
{
message = "Es primo";
return message;
}

return "No es primo";


}

// 16.Escriban una función recursiva llamada Merge que, a partir de dos listas
ordenadas L1 y L2,
//retorne una lista ordenada L3, a través de un proceso de intercalación de
elementos
public LinkedList<Object> ejercicio16 (LinkedList<Integer> l1,
LinkedList<Integer> l2, int n)
{
if (n == l1.size()) return new LinkedList<>();

LinkedList<Object> temp = ejercicio16(l1, l2, n + 1);


temp.add(l1.get(l1.size() - n - 1 ));
temp.add(l2.get(l2.size() - n - 1 ));
return temp;
}
// 17.Retornar la cantidad de dígitos pares de un número entero positivo N. El
dígito 0 debe
//considerarse como par. Por ejemplo, si N = 23025, el resultado es 3.
public int ejercicio17 (int a, int n)
{
String number = Integer.toString(a);

if(n == number.length()) return 0;

int temp = ejercicio17(a, n + 1);

if ((number.charAt(n)) % 2 == 0 )
{
temp++;
}

return temp;
}

/*
18. Un número natural N puede ser expresado utilizando ceros y unos
solamente mediante el denominado
sistema binario. Para obtener la representación binaria de N, deben calcularse
los restos de dividir
sucesivamente N por 2 hasta que el dividendo sea 0. Los restos obtenidos
(listados en orden inverso) son
la representación binaria de N. Por ejemplo, para calcular la representación
binaria de N=28, se deben
calcular los siguientes restos:

28 dividido 2 da 14 y resto 0
14 dividido 2 da 7 y resto 0
7 dividido 2 da 3 y resto 1
3 dividido 2 da 1 y resto 1
1 dividido 2 da 0 y resto 1
Por lo tanto, la representación binaria de 28 es 11100.
*/
public String ejercicio18(int n)
{
if (n < 1) return "";

String i= ejercicio18(n / 2);


i += "" + (n % 2);
return i;
}

/*
19. Escriban una función booleana recursiva llamada Son Iguales que reciba
dos listas de la misma longitud
como parámetros, y devuelva TRUE si son iguales (mismos elementos en el mismo
orden), o FALSE en caso
contrario.
*/

public boolean ejercicio19 (LinkedList<Integer> l1, LinkedList<Integer> l2, int


n, ArrayList<Integer> a1)
{
if (n == l1.size()) return false;

if (l1.get(n) == l2.get(n))
{
a1.add(1);
}

boolean temp = ejercicio19(l1, l2, n + 1, a1);


if (a1.size() == l1.size())
{
temp = true;
}
else
{
temp = false;
}

return temp;
}

/*
20. Escriban una función recursiva llamada Existe Elemento que verifique si
un elemento x se encuentra
en una lista L por lo menos una vez retorna el mensaje “Existe” de lo contrario
“No existe”.
*/
public String ejercicio20 (LinkedList<Integer> l1, ArrayList<Integer> a1, int
a, int n, boolean b)
{
// a: numero que quiero saber si se encuentra
// n: contador para salir
// a1: mi forma de resolver que no se resetee mi requetimiento

if (n == l1.size()) return ""; // Condicion de salida

// BAJADA
if (a == l1.get(n)) //Forma que lo resolvi
{
a1.add(1); // Teniendo un ArrayList puedo usar su tamaño para contar
sin temer de que se reinicie
b = true; // Forma del compañero
}

String temp = ejercicio20(l1, a1, a, n + 1, b);


System.out.println(b);
System.out.println("f " + a1.size());
// BACKTRAKING
if (a1.size() > 0) // Si el tamaño es mayor a 0 significa que almenos una
vez esta mi a
{
temp = "Existe"; // Se envia la respuesta de que efectivamente
"Existe"
}
else
{
temp = "No Existe"; // De lo contrario significa que "No Existe"
}
return temp;
}
/*
21. Describa una función recursiva que retorne el factorial de un numero
dado.
*/
public int ejercicio21 (int a, int n)
{
if ( n == a) return 1;

int temp = ejercicio21(a, n + 1);


System.out.println(temp);
temp *= (n + 1);
return temp;
}

/*
22. Escribir una función recursiva que devuelva la suma de los primeros N
enteros
*/
public int ejercicio22 (int a, int n)
{
if (n > a) return 0;

int temp = ejercicio22(a, n + 1);

if (veces(n) == 2)
{
temp += n;
}
System.out.println(temp);
return temp;
}

// 23.Crear un método recursivo que solucione al siguiente laberinto

public int[][] ejercicio23(int [][] m,int [][] n, int a, int b)


{
if(a == 1) return n;
for (int i = 0; i < m.length; i++)
{
for (int j = 0; j < m[i].length; j++)
{
b = m[i][j];
}
}
int [][] temp = ejercicio23(m, n, a + 1, b);
return null;

}
}

También podría gustarte