Está en la página 1de 9

UNIVERSIDAD POLITCNICA DE VICTORIA @

DISTANCIA

TAREA FUNCIONES RECURSIVAS

Materia: Estructura de datos


M.I. Erndira Gutirrez Meza
Alumna: Perla Eunice Franco Vzquez
Matricula: 1230478

Carrera: Ingeniera en Tecnologas de la Informacin


Recursividad
El concepto de recursividad va ligado al de repeticin. Son recursivos aquellos algoritmos
que, estando encapsulados dentro de una funcin, son llamados desde ella misma una y otra
vez, en contraposicin a los algoritmos iterativos, que hacen uso de bucles while, do-while,
for, etc. Algo es recursivo si se define en trminos de s mismo (cuando para definirse hace
mencin a s mismo). Para que una definicin recursiva sea vlida, la referencia a s misma
debe ser relativamente ms sencilla que el caso considerado.

Elementos de la Recursin

Axioma: Es un caso donde el problema puede resolverse sin tener que


hacer uso de una nueva llamada a s mismo. Evita la continuacin

indefinida de las partes recursivas.


Formula recursiva: Relaciona el resultado del algoritmo con resultados de
casos ms simples. Se hacen nuevas llamadas a la funcin, pero estn
ms prximas al caso base. Por ejemplo, la factorial de un nmero.
factorial (0) -> 1
factorial (1) -> 1*factorial(0)
factorial(2) -> 2*factorial(1)
factorial (3) -> 3*factorial (2)

->

factorial (N) -> 3*factorial (N-1)


En la resolucin de algoritmos recursivos es imprescindible encontrar
estos dos elementos.

Factorial

El factorial de un entero positivo n, el factorial de n o n factorial se define en principio


como el producto de todos los nmeros enteros positivos desde 1 (es decir, los nmeros
naturales) hasta n. Por ejemplo:
5!=1*2*3*4*5=120, 5! se pronuncia como cinco factorial.
La operacin de factorial aparece en muchas reas de las matemticas, particularmente en
combinatoria y anlisis matemtico. De manera fundamental, el factorial de n representa el
nmero de formas distintas de ordenar n objetos distintos (elementos sin repeticin). Este
hecho ha sido conocido desde hace varios siglos, en el s. XII por los estudiosos hindes. La
notacin actual n! fue usada por primera vez por Christian Kramp en 1803.
La definicin de la funcin factorial tambin se puede extender a nmeros no naturales
manteniendo sus propiedades fundamentales, pero se requieren matemticas avanzadas,
particularmente del anlisis matemtico.

Calculando desde el valor anterior


La funcin factorial es formalmente definida mediante el producto:
n!=1*2*3*4*(n-1)*n
Lo que significa "el factorial de cualquier nmero es: el nmero por el factorial de (1
menos que el nmero", por tanto 10! = 10 9!, o incluso 125! = 125 124!.
La regla es: n! = n (n-1)!

Cero factorial

La definicin indicada de factorial es vlida para nmeros positivos. Es posible extender la


definicin a otros contextos introduciendo conceptos ms sofisticados, en especial es
posible definirla para cualquier nmero real excepto para los nmeros enteros negativos y
para cualquier nmero complejo exceptuando de nuevo los nmeros enteros negativos.
Una extensin comn, sin embargo, es la definicin de factorial de cero. De acuerdo con la
convencin matemtica de producto vaco, el valor de 0! debe definirse como: 0!=1
Para cada nmero entero positivo n mayor que 1, es posible determinar el valor del factorial
anterior mediante el uso de la siguiente identidad:
, vlida para todo nmero mayor o igual que 1.
Si aplicamos la misma regla para el caso extremo en que n!=1 tendramos que 0!
corresponde a:

Implementacin del algoritmo para calcular el factorial de un nmero hecho en java.


1. public static int factorial(int n){
2.

if(n<=1) return 1;

3.

else return n*factorial(n-1);

4.

//AXIOMA
//FORMULA RECURSIVA

La sucesin de Fibonacci

Bien, Fibonacci fue un matemtico italiano del siglo XIII, el primero en describir esta
sucesin matemtica. Tambin se lo conoca como Leonardo de Pisa, Leonardo Pisano o
Leonardo Bigollo y ya hablaba de la sucesin en el ao 1202, cuando public su Liber
abaci. Fibonacci era hijo de un comerciante y se cri viajando, en un medio en donde las
matemticas eran de gran importancia, despertando su inters en el clculo de inmediato.
La sucesin de Fibonacci, en ocasiones tambin conocida como secuencia de Fibonacci o
incorrectamente como serie de Fibonacci, es en s una sucesin matemtica infinita. Consta
de una serie de nmeros naturales que se suman de a 2, a partir de 0 y 1. Bsicamente, la
sucesin de Fibonacci se realiza sumando siempre los ltimos 2 nmeros (Todos los
nmeros presentes en la sucesin se llaman nmeros de Fibonacci) de la siguiente manera:
0,1,1,2,3,5,8,13,21,34...
(0+1=1 / 1+1=2 / 1+2=3 / 2+3=5 / 3+5=8 / 5+8=13 / 8+13=21 / 13+21=34...). As
sucesivamente, hasta el infinito. Por regla, la sucesin de Fibonacci se escribe as:
xn = xn-1 + xn-2
Qu es lo asombroso de esta secuencia o sucesin matemtica tan simple y clara?
Que est presente prcticamente en todas las cosas del universo, tiene toda clase de
aplicaciones en matemticas, computacin y juegos, y que aparece en los ms diversos
elementos biolgicos.
Ejemplos claros son la disposicin de las ramas de los rboles, las semillas de las flores, las
hojas de un tallo, otros ms complejos y an mucho ms sorprendentes es que tambin se
cumple en los huracanes e incluso hasta en las galaxias enteras, desde donde obtenemos la
idea del espiral de Fibonacci.

Un espiral de Fibonacci es una serie de cuartos de crculo conectados que se pueden dibujar
dentro de una serie de cuadros regulados por nmeros de Fibonacci para todas las
dimensiones. Entre s, los cuadrados encajan a la perfeccin como consecuencia de la
naturaleza misma de la sucesin, en donde cualquier cifra es igual a la suma de las dos
anteriores. El espiral o rectngulo resultante es conocido como el espiral dorado y el
rectngulo de oro.
Ada uno de los nmeros de Fibonacci se acerca mucho a la llamada proporcin urea,
proporcin dorada o nmero de oro (aproximadamente 1.618034). Cuanto mayor es el par
de nmeros de Fibonacci, ms cerca de la proporcin dorada estamos. Naturalmente, sta
cifra resulta ms bella y ms agradable a nuestra percepcin y ya sea consciente o
inconscientemente, artistas la han empleado a lo largo de toda la historia de la humanidad.
Desde arquitectos y escultores de la Antigua Grecia a pintores como Miguel ngel y Da
Vinci, a compositores como Mozart y Beethoven o, ms prximo a nuestros das, las
composiciones de artistas como Bla Bartk y Olivier Messiaen. La gloriosa banda de rock:
Tool, tambin ha trabajado de forma conceptual con esta secuencia matemtica de acuerdo
a la sucesin de notas y estructuras musicales.
Implementacin del algoritmo para calcular la sucesin de Fibonacci hecho en java.
1. public static int fibonacci(int n){
2.

if(n==1 || n==2) return n; //AXIOMA

3.

else return fibonacci(n-1)+fibonacci(n-2);//FORMULA RECURSIVA

4.

Las Torres de Hani

Es un rompecabezas o juego matemtico inventado en 1883 por el matemtico francs


douard Lucas.1 Este juego de mesa solitario se trata de un juego de ocho discos de radio
creciente que se apilan insertndose en una de las tres estacas de un tablero. El objetivo del
juego es crear la pila en otra de las estacas siguiendo ciertas reglas. El problema es muy
conocido en la ciencia de la computacin y aparece en muchos libros de texto como
introduccin a la teora de algoritmos.

Descripcin
El juego, en su forma ms tradicional, consiste en tres varillas verticales. En una de las
varillas se apila un nmero indeterminado de discos (elaborados de madera) que
determinar la complejidad de la solucin, por regla general se consideran ocho discos. Los
discos se apilan sobre una varilla en tamao decreciente. No hay dos discos iguales, y todos
ellos estn apilados de mayor a menor radio en una de las varillas, quedando las otras dos
varillas vacantes. El juego consiste en pasar todos los discos de la varilla ocupada (es decir
la que posee la torre) a una de las otras varillas vacantes. Para realizar este objetivo, es
necesario seguir tres simples reglas:

Slo se puede mover un disco cada vez.


Un disco de mayor tamao no puede descansar sobre uno ms pequeo que l
mismo.

Slo puedes desplazar el disco que se encuentre arriba en cada varilla.

Solucin mediante recursividad


Este problema se suele plantear a menudo en programacin, especialmente para explicar
la recursividad. Si numeramos los discos desde 1 hasta n, si llamamos origen a la primera
pila de discos, destino a la tercera y auxiliar a la intermedia, y si a la funcin la
denominramos hanoi, con origen, auxiliar y destino como parmetros, el algoritmo de la
funcin sera el siguiente:

Algoritmo Torres de Hani


Entrada: Tres pilas de nmeros origen, auxiliar, destino, con la pila origen ordenada
Salida: La pila destino
1. si origen

entonces

1. mover el disco 1 de pila origen a la pila destino (insertarlo arriba de la pila


destino)
2. terminar
2. si no
1. hanoi(
,origen,destino, auxiliar) //mover todas las fichas
menos la ms grande (n) a la varilla auxiliar
3. mover disco n a destino

//mover la ficha grande hasta la varilla final

4. hanoi (auxiliar, origen, destino)


encima de la ficha grande (n)

//mover todas las fichas restantes, 1...n1,

5. terminar

El nmero de movimientos mnimo a realizar para resolver el problema de este modo es de


2n 1, siendo n el nmero de discos.

Implementacin algoritmo de Torres de Hanoi:


public static void Hanoi(int n, int origen, int auxiliar, int destino){
if(n==1)
System.out.println("mover disco de " + origen + " a " + destino);
else{
Hanoi(n-1, origen, destino, auxiliar);
System.out.println("mover disco de "+ origen + " a " +
destino);
Hanoi(n-1, auxiliar, origen, destino);
}
}

También podría gustarte