Academia Hack — Curso Introductorio — Extra I

Recursividad

Juan Manrique
2 min readMay 3, 2019

Funciones recursivas

Las funciones recursivas son funciones que se invocan a ellas mismas. Toda función recursiva debe tener 2 características obligatorias:

  1. Tener una condición de parada, conocido como caso base.
  2. Invocarse a ella misma, llamado caso recursivo.

Algunos ejemplos clásicos de recursividad son la función factorial, la sucesión de Fibonacci, el recorrido de listas y árboles binarios, etc.

Función Sumatoria recursiva

def sumat(n)
if n > 0
return n + sumat(n — 1) # caso recursivo
end
return 0 # caso base
end

Función Factorial recursiva

def fact(n)
if n > 0 # caso recursivo
return n * fact(n — 1)
end
return 1 #caso base
end
# Versión pedagógica
def fact(n)
if n > 0 # caso recursivo
return n * fact(n — 1)
end
if n == 0 # caso base
return 1
end
end

Sucesión de Fibonacci

# Suces. de Fibonacci: f(n) = f(n-1) + f(n-2) ^ f(1) = 1 ^ f(0) = 0def fibonacci2( n )
if n > 1 # caso recursivo
return fibonacci2(n — 1) + fibonacci2(n — 2)
end
return n # caso base
end
# Versión pedagógicadef fibonacci n
if n > 1 # caso recursivo
return fibonacci(n — 1) + fibonacci(n — 2)
end
if n == 1 # caso base
return 1
end
if n == 0 #caso base
return 0
end
end

Ejercicios propuestos

  1. Escriba una función recursiva en Ruby que muestre por pantalla los números del 1 al 100.
  2. Escriba una función recursiva en Ruby que devuelva la potencia de un número elevado a un exponente cualquiera. La base y el exponente son indicados por parámetros.
  3. Escriba una función recursiva en Ruby para calcular la sumatoria desde uno (1) hasta un número dado
  4. Escriba una función recursiva en Ruby que, dado un número, devuelva su factorial.
  5. Escriba una función recursiva en Ruby que detecte si un número es primo o no.
  6. Escriba una función recursiva en Ruby para verificar si un texto es palíndromo o no.

--

--

Juan Manrique

SW developer. Coding Mentor @academia_hack. Agile promoter. Writer. Simplifier. Motivator. Venezuelan Rums Expert Evangelist. At your services.