Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 5. Recursividad
int restados(int n) {
int valor=0;
if (n==2) {
valor=0;
}
else {
valor= n+restados(n-2);
}
return valor;
}
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.
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');
}
}
}
class Ejercicio {
public static void main(String[]args) {
metodoA(3);
}
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.
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?
class Indirecta {
public static void main(String [] args) {
int n=6;
m1(n);
}
public static void m1(int n) {
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);
}
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:
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.