PDF de programación - Java - Recursividad y sobrecarga de métodos

Imágen de pdf Java - Recursividad y sobrecarga de métodos

Java - Recursividad y sobrecarga de métodosgráfica de visualizaciones

Publicado el 1 de Septiembre del 2018
1.682 visualizaciones desde el 1 de Septiembre del 2018
299,3 KB
12 paginas
Creado hace 12a (23/08/2011)
TECNICAS DE PROGRAMACION
Universidad Católica Los Angeles de Chimbote

RECURSIVIDAD Y SOBRECARGA DE METODOS

RECURSIVIDAD
Un método es recursivo cuando se llama a si mismo ya sea directamente e
indirectamente.
Si un método recursivo se invoca con un caso base, simplemente devuelve un
resultado. Si el método se invoca con un problema más complejo, divide el
problema en dos o más partes conceptuales: una parte del método sabe como
resolver y una versión un poco más pequeña del problema original. Dado que este
nuevo problema se asemeja al problema original, el método emite una llamada
recursiva para trabajar con el problema reducido.

Para que la recursividad termine, cada vez que el método recursivo se llama a si
mismo con una versión un poco más sencilla del problema original, la secuencia

Docente: Ing. Martín Salcedo Quiñones

Pagina: 1

TECNICAS DE PROGRAMACION
Universidad Católica Los Angeles de Chimbote

de problemas cada vez menores debe convergir hacia el caso base. Cuando el
método reconoce el caso base, devuelve el resultado a la llamada de método
previa, y se inicia una secuencia de devoluciones que termina cuando la llamada
del método original devuelve el resultado final.

Recursividad vs Iteración
Tanto la iteración como la recursión se basan en una estructura de control.: La
iteración usa una estructura de repetición; la recursión una estructura de
selección.

Tanto la iteración como la recursión implican repetición: la iteración emplea
explícitamente una estructura de repetición; la recursión logra la repetición
mediante llamadas de métodos repetidas

Tanto la iteración como la recursión incluyen una prueba de terminación; la
iteración termina cuando deja de cumplirse la condición para continuar el ciclo; la
recursión termina cuando se reconoce el caso base.

PROGRAMAS RESUELTOS

1) Hacer un programa para calcular el factorial de un número.

import java.io.*;

public class Recursividad01{

public static int factorial(int n)
{


}

if(n==0) return 1;
else return n*factorial(n-1);

Docente: Ing. Martín Salcedo Quiñones

Pagina: 2

TECNICAS DE PROGRAMACION
Universidad Católica Los Angeles de Chimbote

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

public static void main(String args[]) throws IOException
{

int num;
do{



}
}

System.out.print("Ingrese numero :");
num=Integer.parseInt(br.readLine());
}while(num<=0);
System.out.println("El factorial es : "+factorial(num));

Interpretación de la programación:
El método recursivo llamado factorial tiene un perímetro de tipo entero lalamado n.
Se evalúa su valor si es igual cero usando la sentencia IF, si es falso se retorna el
valor de n multiplicado con lo que retornará el método factorial al darle el valor de
n disminuido en 1. Si observamos la figura que se coloca al incio de esta sesión:

En la figura se observa el método Fact (que en nuestro programa se llama
factorial) calcula el factorial de 3. En la primera llamada retorna 3 * Fact(3-1), el
Fact(3-1) en la segunda llamada del método retorna 2 * Fact(2-1) y asi
sucesivamente hasta que en la última llamada al aplicar Fact(1-1) devolverá el
valor de 1.

Docente: Ing. Martín Salcedo Quiñones

Pagina: 3

TECNICAS DE PROGRAMACION
Universidad Católica Los Angeles de Chimbote

En el método main se crea el objeto br de tipo BufferedReader (para lectura de
datos), luego se declara la variable num de tipo entero. A través de la sentencia
repetitiva se pide el ingreso del número para la variable num y sies un valor
negativo se volverá a solictar nuevamente el ingreso de dicho número. Finalmente
a través del método println se muestra el cálculo del método recursivo factorial
teniendo como valor de entrada el contenido de la variable num.

2) Calcular la potencia de x elevado a la n en forma recursiva. x real y n entero
positivo

import java.io.*;

class recursividad02{

public static double potencia(double x, double n)
{


}

if(n==0) return 1;
else return x*potencia(x,n-1);

public static void main(String args[]) throws IOException
{



BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n;
double x;
System.out.print("Valor de x :");
x= Double.parseDouble(br.readLine());
do{

System.out.print("valor de n : ");
n=Integer.parseInt(br.readLine());

}while(n<=0);
System.out.println(x+" elevado a la "+n+" es igual a "+potencia(x,n));

}
}

Docente: Ing. Martín Salcedo Quiñones

Pagina: 4

TECNICAS DE PROGRAMACION
Universidad Católica Los Angeles de Chimbote

3) Hacer un programa para que reporte los n términos de la serie de Fibonacci

import java.io.*;

class recursividad03{

public static int fibonacci(int n)
{



}

if(n==1) return 1;
else
if(n==2)
return 1;
else
return fibonacci(n-1) + fibonacci(n-2);

public static void main(String args[]) throws IOException
{



BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n,i ;
do{

System.out.print("Número de terminos de la serie : ");
n=Integer.parseInt(br.readLine());

}while(n<=0);
for(i=1;i<=n;i++)
System.out.print(fibonacci(i) + " ");
System.out.println();

}
}

4) Programa para calcular el máximo común divisor de dos números.

import java.io.*;

class recursividad04{

Docente: Ing. Martín Salcedo Quiñones

Pagina: 5

TECNICAS DE PROGRAMACION
Universidad Católica Los Angeles de Chimbote

public static int mcd(int a,int b)
{


}

if(a%b==0) return b;
else return mcd(b,a%b);

public static void main(String args[]) throws IOException
{



BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int x,y;
do{

System.out.print("Ingrese primer numero :");
x=Integer.parseInt(br.readLine());

}while(x<=0);
do{

System.out.print("Ingrese segundo numero :");
y=Integer.parseInt(br.readLine());

}while(y<=0);
System.out.println("El mcd de "+x+" y "+y+" es : "+mcd(x,y));

}
}

5) Programa para reportar un numero al reves

import java.io.*;
class recursividad05{

public static void reves(int n)
{



System.out.print(n % 10);
if( n/10 !=0 ) reves(n/10);

}

public static void main(String args[]) throws IOException

Docente: Ing. Martín Salcedo Quiñones

Pagina: 6

TECNICAS DE PROGRAMACION
Universidad Católica Los Angeles de Chimbote

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num;
do{
System.out.print("Ingrese numero :");
num=Integer.parseInt(br.readLine());
}while(num<=0);
System.out.print("Numero al reves :");
reves(num);
System.out.println();

{



}
}

6) Programa para convertir un número de base 10 a base b (entre 2 y 9)

import java.io.*;
class recursividad06{

public static void conversionBase(int n, int b)
{



if(n<b)
System.out.print(n);
else
{
conversionBase(n/b,b);
System.out.print(n%b);
}

}

public static void main(String args[]) throws IOException
{



BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num,b;
do{

System.out.print("Ingrese numero :");

Docente: Ing. Martín Salcedo Quiñones

Pagina: 7

TECNICAS DE PROGRAMACION
Universidad Católica Los Angeles de Chimbote

num=Integer.parseInt(br.readLine());

}while(num<=0);
do{

System.out.print("Base a la que quiere convertir : ");
b=Integer.parseInt(br.readLine());

}while(b<2 || b>9);
System.out.print("El numero "+num+" en base "+b+" es : ");
conversionBase(num,b);
System.out.println();

}
}

SOBRECARGA DE METODOS
Java permite definir varios métodos con el mismo nombre en tanto dichos métodos
tengan diferentes juegos de parámetros ( con base en el número y el orden de los
parámetros). Esto se denomina sobrecarga de métodos. Cuando se invoca un
método sobrecargado, el compilador de Java selecciona el método adecuado
examinando el número, los tipos y el orden de los argumentos en la llamada. La
sobrecarga de métodos suele utilizarse para crear varios métodos con el mismo
nombre que realizan tareas similares, pero sobre datos de diferentes tipos.

import java.io.*;
class sobrecarga01{

public static int cuadrado(int x)
{

return x*x;

}

public static float cuadrado(float x)
{

return x*x;

}

Docente: Ing. Martín Salcedo Quiñones

Pagina: 8

TECNICAS DE PROGRAMACION
Universidad Católica Los Angeles de Chimbote

public static double cuadrado(double x)
{

return x*x;

}

public static void main(String args[]) throws IOException
{



}
}

int a=3;
float b=3.4f;
double c=12.5;
System.out.println("El cuadrado de "+a+ " es : "+cuadrado(a));
System.out.println("El cuadrado de "+b+" es : "+cuadrado(b));
System.out.println("El cuadrado de "+c+" es : "+cuadrado(c));

EJECUTANDO LA PRIMERA APLICACION

1. Crea un proyecto denominado: Sesion03_Aplicaciones

Docente: Ing. Martín Salcedo Quiñones

Pagina: 9

TECNICAS DE PROGRAMACION
Universidad Católica Los Angeles de Chimbote

Observa que debes crear la clase principal Recursividad01 dentro del paquete
sesion03_aplicaciones. Luego dar clic en el botón de comando Terminar

2. Ahora se observa el entorno de NetBeans listo para colocar la programación de

la primera aplicación.

3. Asi debe quedar luego de colocar las instrucciones de la primera aplicación.

Docente: Ing. Martín Salcedo Quiñones

Pagina: 10

TECNICAS DE PROGRAMACION
Univer
  • Links de descarga
http://lwp-l.com/pdf13327

Comentarios de: Java - Recursividad y sobrecarga de métodos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad