Tema 5. Recursividad 1. ¿Qué valor devolverá el método restados si

Anuncio
Metodología y Tecnología de la Programación
ESI-UCLM
Tema 5. Recursividad
1. ¿Qué valor devolverá el método restados si le pasamos el valor 5? ¿Y si le pasamos 6?
int restados(int n) {
int valor=0;
if (n==2) {
valor=0;
}
else {
valor= n+restados(n-2);
}
return valor;
}
2. La función ficticia llamada “recur” de un número se calcula de la siguiente forma:
recur(1)=1;
recur(n)=(n-3)+recur(n-1)
Implemente un método recursivo que calcule la función recur para cualquier número que se le
pase como parámetro. El número que se pasa ya cumple la condición de ser mayor o igual a 1.
3. ¿Cuál es el resultado del siguiente programa?
class Ejercicio {
public static void main (String[]args) {
metodo1(4);
}
public static void metodo1(int n) {
if (n<2)
System.out.print('X');
else {
metodo1(n-1);
System.out.print('O');
}
}
}
4. ¿Cuál es el resultado del siguiente programa?
class Ejercicio {
public static void main(String[]args) {
metodoA(3);
}
public static void metodoA(int n)
if (n<1){
System.out.print(“Libro”);
}
else {
metodoA(n-1);
System.out.print(“Revista”);
}
}
{
}
5. Cuenta la leyenda que en el gran templo de Benarés existe una base de bronce de la que sobresalen
tres varillas de diamante. En el momento de la creación, Dios colocó 64 discos de oro ensartados en la
primera varilla, colocados de abajo arriba en orden de tamaño decreciente; esta es la torre de Brahma.
Los sacerdotes están tratando de pasar la pila de la primera varilla a la segunda, sometidos a las leyes de
Brahma que indican que sólo se puede mover un disco a la vez, y que en ningún momento se puede
colocar un disco más grande sobre uno más pequeño. Se cuenta con la tercera varilla para colocar los
discos temporalmente. Cuando todos los discos hayan sido transferidos, la torre, los sacerdotes, el
templo, y todo el mundo desaparecerá con un estruendo (Enunciado original del hoy conocido como
problema de las torres de Hanoi).
Desarrolle un programa con un método recursivo que solucione el problema de las torres de
Hanoi para un número arbitrario de discos. El programa debe imprimir la secuencia precisa de
transferencia de los n discos de una varilla a otra.
Ejercicios tema 5
Página: 1
Metodología y Tecnología de la Programación
ESI-UCLM
6. Escriba un método recursivo que calcule la potencia n de un número x. Use este método en un
programa que lea por línea de órdenes el valor de x y de n y calcule e imprima por pantalla el resultado
de la potencia.
7. ¿Cuál es el error del siguiente método que pretende evaluar un sumatorio? ¿Cómo corregiría el error?
int suma(int numero){
if (numero ==0)
return 0;
else
numero+suma(numero-1);
}//Fin del método suma
8. ¿Cuál es la salida del siguiente programa? ¿Y si n vale 5?
class Indirecta {
public static void main(String [] args) {
int n=6;
m1(n);
}
public static void m1(int n) {
// El caso base es n=0
if (n == 0) {
System.out.println("En m1 con N: " +n+"\n");
}
else {
// Caso inductivo
m2(n);
System.out.println("En m1 despues de la llamada recursiva a m1: "+n);
}
}
public static void m2(int n) {
System.out.println("En m2 con N: " +n);
m3(n-1);
System.out.println("En m2 despues de la llamada recursiva a m1: "+n);
}
public static void m3(int n) {
System.out.println("En m3 con N: " +n);
m1(n-1);
System.out.println("En m3 despues de la llamada recursiva a m1: "+n);
}
}//fin clase Indirecta
9. Dada la siguiente relación de recurrencia para evaluar el polinomio de Chebyshev de grado n para un x
dado:
T0(x)=1 para un polinomio de grado 0.
T1(x)=x para un polinomio de grado 1.
Tn(x)=2xTn-1(x)-Tn-2(x) para un polinomio de grado distinto de 0 y 1
Implemente un método recursivo que aplique dicha relación. Escriba un programa que conociendo el
grado del polinomio, calcule e imprima con 4 decimales el valor de dicho polinomio para un x dado. Los
datos de entrada se deben proporcionar usando la clase Scanner y para la salida se usará el método
printf.
10. Construir un programa que obtenga el término n de la serie de Fibonacci. El valor de n deberá leerse
por teclado usando la clase Scanner. La serie de Fibonacci es una secuencia de enteros positivos, cada
uno de los cuales es la suma de los dos anteriores. Los dos primeros números de la secuencia son 0 y 1,
La serie se define como:
Fibonacci=n para n<=1
Fibonaccin=Fibonaccin-1+Fibonaccin-2 para todo n>1
El programa tendrá, además del método main, un método recursivo para calcular dicho término. El
método main deberá llamar al método e imprimir, usando printf, el término n de la serie. Si el usuario
introduce un valor negativo, el programa debe emitir un aviso.
Ejercicios tema 5
Página: 2
Descargar