Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INFORMATICA
“ESTRUCTURA DE DATOS”
GRUPO
3a3A
PRESENTA
MARTINEZ FLORES MOISES
RAMIREZ CAMARENA KEVIN OSCAR
Caso Base:
si n = 0 entonces 2^0 = 1
import java.util.*;
public class Elevar2aN {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num;
do{
System.out.print("Introduce un numero entero >=0 ");
num = sc.nextInt();
}while(num<0);
System.out.println("2 ^ " + num + " = " + potencia(num));
}
public static double potencia(int n){
if(n==0) //caso base
return 1;
else
return 2 * potencia(n-1);
}
}
Recursos, materiales y equipo
• Computadora
• IDE NETBEANS,
• JDK.
• Lectura de los materiales de apoyo del tema 1 (AULA MOODLE, O Link de
Consulta)
• Clase Tools.
COMPETENCIAS.
A desarrollar:
Conoce, comprende y aplica eficientemente estructuras de datos, métodos de
ordenamiento y búsqueda
para la optimización del rendimiento de soluciones a problemas del mundo real
Específica(s):
Aplica la recursividad en la solución de problemas valorando su pertinencia en el
uso eficaz de los recursos.
Genéricas:
• Habilidad para buscar y analizar
• información proveniente de fuentes diversas.
• Capacidad de análisis y síntesis
• Habilidad en el manejo de equipo de cómputo
• Capacidad para trabajar en equipo.
• Capacidad de aplicar los conocimientos en la práctica.
Recursividad practica elaborada.
En esta unidad pusimos aprueba muchos métodos los cual se los
mostrare mas adelante
Paso 1.- primero debemos de crear un proyecto y tres paquetes el primero será de
EntradaSalida, el segundo paquete se llamara MetodoRecursivos y por ultimo
Tema2Recursividad este será nuestro ejecutable
TOOLS:
package EntradaSalida;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Tools {
public static int leerInt(String msje) {
int num = 0;
boolean r = true;
do {
try {
num = (Integer.parseInt(JOptionPane.showInputDialog(null, msje, "dame
un valor", JOptionPane.INFORMATION_MESSAGE)));
r = false;
} catch (NumberFormatException e) {
Tools.errorMsje("error: ingrese valor valido, no vacios ni use decimales o
letras");
}
} while (r);
return num;
}
public static double leerDouble(String msje) {
double num = 0;
boolean r = true;
do {
try {
num = (Double.parseDouble(JOptionPane.showInputDialog(null, msje,
"dame un valor", JOptionPane.INFORMATION_MESSAGE)));
r = false;
} catch (NumberFormatException e) {
Tools.errorMsje("error: ingrese valor valido, no espacios vacios ni use
letras");
}
} while (r);
return num;
}
public static float leerFloat(String msje) {
float num = 0;
boolean r = true;
do {
try {
num = (Float.parseFloat(JOptionPane.showInputDialog(null, msje, "dame
un valor", JOptionPane.INFORMATION_MESSAGE)));
r = false;
} catch (NumberFormatException e) {
Tools.errorMsje("error: ingrese valor valido, espacios vacios ni use
letras");
}
} while (r);
return num;
}
public static Byte leerByte(String msje) {
byte num = 0;
boolean r = true;
do {
try {
num = (Byte.parseByte(JOptionPane.showInputDialog(null, msje, "dame
un valor", JOptionPane.INFORMATION_MESSAGE)));
r = false;
} catch (NumberFormatException e) {
Tools.errorMsje("error: ingrese valor valido, espacios vacios ni use
decimales o letras");
}
} while (r);
return num;
}
// Les recuerdo que udes deben complementar las Entrada de datos de enteros y
reales..tipos de datos de java
return cad;
}
// Mensajes de salida
public static void imprimeMsje(String msje) { // Salida de mensaje
JOptionPane.showMessageDialog(null, msje, "salida",
JOptionPane.INFORMATION_MESSAGE);
}
public static void errorMsje(String msje) { // Salida de mensaje de error
JOptionPane.showMessageDialog(null, msje, "intenta de nuevo",
JOptionPane.ERROR_MESSAGE);
}
public static void imprimeAreaTexto(String cad) {//Salida en una area de texto con
scroll
JTextArea areaSalida = new JTextArea(10, 4);
JScrollPane scroller = new JScrollPane(areaSalida);
areaSalida.setText("\n" + cad);
JOptionPane.showMessageDialog(null, scroller, "SALIDA",
JOptionPane.INFORMATION_MESSAGE);
}
public static int SiNo() { // Botones se pueden usar en ciclos o en switch
return (JOptionPane.showConfirmDialog(null, "deseas continuar", "capturando
de objetos", JOptionPane.YES_NO_OPTION));
}
// Metodos que permiten seleccionar un dato especifico cuando el ejercicio indica
items a considerar. Modelo que les puede servir para crear nuevos metodos.
public static char genero(String msje) {
Object[] valores = {'M', 'F'};
char res = (char) JOptionPane.showInputDialog(null, msje, "Selecciona",
JOptionPane.INFORMATION_MESSAGE, null, valores, valores[0]);
return (res);
}
public static String carrera(String msje) { //Metodo que permite seleccionar una
carrera, debera de agregar las carreras que oferta el Tec
Object valores[] = {"Ing. Sistemas Computacionales", "Ing. Quimica", "Ing.
Informatica, Ing. Industrial, Ing. Electronica"};
String res = (String) JOptionPane.showInputDialog(null, msje, "Selecciona",
JOptionPane.INFORMATION_MESSAGE, null, valores, valores[0]);
return res;
}
public static String color() {
Object valores[] = {"Verde", "Rojo", "Azul Metálico", "Negro", "Blanco"};
String res = (String) JOptionPane.showInputDialog(null, "Gama de Colores", "
Selecciona:", JOptionPane.QUESTION_MESSAGE, null, valores, valores[0]);
return (res);
}
public static int semestre(String msje) {
Object[] valores = {1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12};
int res = (int) JOptionPane.showInputDialog(null, msje, "Selecciona",
JOptionPane.QUESTION_MESSAGE, null, valores, valores[0]);
return (res);
}
RECURSIVIDAD:
package MetodosRecursivos;
import EntradaSalida.Tools;
}
return div;
} else {
return num1;
}
}
FUNCION FIBONACCI
public static int funcionFibonacci(int num) {
if (num == 0 || num == 1) {
return num;
} else {
return funcionFibonacci(num - 1) + funcionFibonacci(num - 2);
}
}
}
return binario(n / 2) + "" + n % 2;
}
}
NUMEROS AMIGOS APLICANDO RECURSIVIDAD
public static boolean sonAmigos(int num1, int num2) {
boolean amigos;
if (num1 == sumaDivisores(num2)) {
amigos = num2 == sumaDivisores(num1) ? true : false;
} else {
amigos = false;
}
return amigos;
}
SUMA DE DIVISORES APLICANDO RECURSIVIDAD
public static int sumaDivisores(int numero) {
int sumaDivisores = 0;
int i = 0;
if (i < numero) {
if (numero % i == 0) {
sumaDivisores += i;
}
}
return sumaDivisores;
}
static int sumar(int t[], int pos) {
if (pos < t.length) {
return t[pos] + sumar(t, pos + 1);
}
return 0;
}
}
RESULTADOS DE P RACT ICAS:
CONCLUSIONES.-
La recursividad es un concepto fundamental en matemáticas y en computación
Es una alternativa diferente para implementar estructuras de repetición, los
módulos se hacen llamadas recursivas se puede usar en todas las situaciones en
la cual la solución puede ser expresada como una secuencia de movimientos,
pasos o transformaciones gobernadas por un conjunto de reglas además como se
pudo notar la recursividad también se puede trabajar mediante pilas así como
también se menciono algunos algoritmos para utilizar la recursividad
REFERENCIAS:
https://es.slideshare.net/bennnylove/recursividad-42425470
“estructura de datos” Osvaldo Cairo Silvia Guardati tercera edición.
https://www.tutorialesprogramacionya.com/javaya/detalleconcepto.php?codigo=12
3&punto=&inicio=40#:~:text=En%20Java%20los%20m%C3%A9todos%20pueden,
nuevas%20variables%20locales%20y%20par%C3%A1metros.
http://puntocomnoesunlenguaje.blogspot.com/2012/04/recursividad-en-java.html