Hola, os traigo un listado de ejercicios de recursividad con su solución. A nivel de recursividad es muy importante conocer su funcionamiento baso en fórmulas recursivas y casos bases. Estos ejercicios son ideales para exámenes de cualquier asignatura de programación.
EJERCICIO 1: MCD EUCLIDES RECURSIVO
Dados 2 números enteros positivos m y n, tal que m>n, para encontrar su máximo común divisor (mayor entero positivo que divide a ambos):
• Dividir m por n para obtener el resto r (0 <= r <n)
• Si r=0, el MCD es m
• Sino, el máximo común divisor es MCD(n,r)
_________________________________________
SOLUCIÓN
function r = MCD_Euclides_rec (a,b)
if (b == 0)
r = a;
else
r = MCD_Euclides_rec(b, rem(a,b));
end
end
EJERCICIO 2: POTENCIA RECURSIVA
Programar un algortimo recursivo que calcule la potencia de un número elevado a un exponente determinado.
Ejemplo: potencia_rec(2,3) devolverá como resultado 8
____________________________________________
SOLUCIÓN
function n = potencia_rec(b,e)
if(e==0)
n=1;
elseif (e==1)
n=b;
%FÓRMULA RECURSIVA
else
n = b*potencia_rec(b,e-1);
end
end
EJERCICIO 3: SUCESIÓN DE JACOBSTHAL
Programar un algoritmo recursivo que permita calcular la sucesión de Jacobsthal (más info en Wikipedia)
_______________________________________
SOLUCIÓN
function m = jacobsthal(n)
if n==0
m=0
elseif n==1
m=1
else
m=jacobsthal(n-1)+2*jacobsthal(n-2);
end
end
EJERCICIO 4: NÚMERO DE FRANÇOIS É. ANATOLE LUCAS
Realizar la implementación de un algoritmo recursivo que permita obtener el número de François É. Anatole Lucas dada una posición concreta. De manera similar a los números de Fibonacci, cada número de Lucas se define como la suma de sus dos inmediatos anteriores, formando así una secuencia de enteros de Fibonacci. Los dos primeros números Lucas son L0 = 2 y L1 = 1 en contraposición a los dos primeros números de Fibonacci que son F0 = 0 y F1 = 1. Aunque estrechamente relacionado en la definición, los números de Lucas y de Fibonacci presentan propiedades distintas.
La secuencia de números Lucas es: 2, 1, 3, 4, 7, 11, 18, 29, 47, 76, 123
Por tanto, si el programa toma un 0, la salida será 2; si toma un 1, será 1; si toma un 2, será 3.
_____________________
SOLUCIÓN
Idem que fibonacci cambiando los casos base