Siguiendo con los algoritmos y ejercicios resueltos en Ruby, vamos a ver hoy cómo obtener el número fibonacci que va en determinada posición.
Por ejemplo, el número de la sucesión fibonacci que va en la posición 7 (recordemos que comienza desde cero) es el 13, pues la sucesión va así:
0, 1, 1, 2, 3, 5, 8, 13
Lo que haremos con Ruby será recibir un número y regresar el número fibonacci que va en esa posición; lo haremos de forma recursiva y también usando ciclos.
Nota: las funciones no imprimen la sucesión, pero basta con que dentro de cada una de ellas se imprima el valor con puts
y listo, la sucesión será impresa.
El algoritmo para obtener la sucesión fibonacci en Ruby
Se comienza en 0 y en 1, y luego, el siguiente valor es la suma de los dos anteriores. Con Ruby no se necesita una variable temporal, pues se puede hacer así:
siguiente, actual = siguiente + actual, siguiente
El ciclo se repite hasta que se alcance la posición, y se regresa el valor que esté en actual
.
Fibonacci con ciclos en Ruby
Aquí está la implementación con lo que vendría siendo un ciclo for en otros lenguajes de programación:
=begin
Sucesión de fibonacci con ciclos
en Ruby
@author parzibyte
=end
def fibonacci(posicion)
siguiente = 1
actual = 0
(1..posicion).each do
# Si quieres imprimir la sucesión, simplemente descomenta lo siguiente:
#puts actual
siguiente, actual = siguiente + actual, siguiente
end
actual
end
Al final se regresa el valor actual
, aunque no está la palabra reservada return
, es la última expresión de la función y por lo tanto es lo que se regresa.
Fibonacci recursivo con Ruby
En este caso utilicé la fórmula que estaba en Wikipedia, la cual usa recursividad:
=begin
Sucesión de fibonacci utilizando
recursividad en Ruby
@author parzibyte
=end
def fibonacci_recursivo(posicion)
if posicion < 2
return posicion
end
return fibonacci_recursivo(posicion - 1) + fibonacci_recursivo(posicion - 2)
end
Forma de llamar a las funciones
Para llamarlas simplemente escribe:
fibonacci numero
Por ejemplo, fibonacci 5
También se puede llamar a la función y asignar el resultado a una variable:
numero = fibonacci 5
Descargar ejercicios
Eres libre de descargar el código fuente. Para ello, ponlo en un archivo con extensión rb
, asegúrate de tener instalado Ruby, navega hasta la terminal y ejecuta:
ruby archivo.rb