aboutsummaryrefslogtreecommitdiff
path: root/tp/n4.lyx
diff options
context:
space:
mode:
authorJuan Marín Noguera <juan.marinn@um.es>2020-02-20 16:07:37 +0100
committerJuan Marín Noguera <juan.marinn@um.es>2020-02-20 16:07:37 +0100
commitc6f69b3f45b81d19b8eeb87184bf16e6de0fad24 (patch)
tree92d4e853e031c3ff144a72a2326312cf58e8dae3 /tp/n4.lyx
parent1eea228b43c3e243c1e1e9baf21d5d0d3f970152 (diff)
2
Diffstat (limited to 'tp/n4.lyx')
-rw-r--r--tp/n4.lyx252
1 files changed, 252 insertions, 0 deletions
diff --git a/tp/n4.lyx b/tp/n4.lyx
new file mode 100644
index 0000000..485838b
--- /dev/null
+++ b/tp/n4.lyx
@@ -0,0 +1,252 @@
+#LyX 2.3 created this file. For more info see http://www.lyx.org/
+\lyxformat 544
+\begin_document
+\begin_header
+\save_transient_properties true
+\origin unavailable
+\textclass book
+\use_default_options true
+\maintain_unincluded_children false
+\language spanish
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_osf false
+\font_sf_scale 100 100
+\font_tt_scale 100 100
+\use_microtype false
+\use_dash_ligatures true
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\spacing single
+\use_hyperref false
+\papersize default
+\use_geometry false
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
+\cite_engine basic
+\cite_engine_type default
+\biblio_style plain
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 1
+\use_minted 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\is_math_indent 0
+\math_numbering_side default
+\quotes_style swiss
+\dynamic_quotes 0
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Standard
+Un proceso es
+\series bold
+recursivo
+\series default
+ si se especifica basándose en su propia definición.
+ Una función es recursiva si se llama a sí misma, y está bien construida
+ si contiene al menos un
+\series bold
+caso base
+\series default
+ y al menos un
+\series bold
+caso general
+\series default
+ o
+\series bold
+de recursión
+\series default
+ en el que los parámetros están cada vez
+\begin_inset Quotes cld
+\end_inset
+
+más cerca
+\begin_inset Quotes crd
+\end_inset
+
+ del caso base, garantizándose que este se alcanza.
+ Tipos de recursividad:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Directa
+\series default
+ o
+\series bold
+simple
+\series default
+: La función contiene una llamada explícita a sí misma.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Múltiple
+\series default
+: Hay más de una llamada recursiva en el cuerpo de la función.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Indirecta
+\series default
+ o
+\series bold
+cruzada
+\series default
+: La función invoca a otra que a su vez acaba llamando a la primera.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+De cola
+\series default
+ o
+\series bold
+de extremo final
+\series default
+: La llamada recursiva es la última instrucción que ejecuta la función.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Anidada
+\series default
+: En algún parámetro de la llamada recursiva hay otra llamada recursiva.
+\end_layout
+
+\begin_layout Standard
+La
+\series bold
+pila de llamadas
+\series default
+ (
+\emph on
+call stack
+\emph default
+),
+\series bold
+de ejecución
+\series default
+,
+\series bold
+de control
+\series default
+,
+\series bold
+de función
+\series default
+ o
+\series bold
+de tiempo de ejecución
+\series default
+ es una estructura dinámica que almacena información sobre las subrutinas
+ activas en un programa.
+ Cada llamada añade un
+\series bold
+marco de pila
+\series default
+ (
+\emph on
+stack frame
+\emph default
+), al que el profesor llama
+\series bold
+registro de activación
+\series default
+, donde se guardan variables locales, parámetros, dirección de retorno y
+ valor devuelto.
+ Las llamadas recursivas se gestionan igual que el resto, por lo que pueden
+ producir un
+\series bold
+desbordamiento de pila
+\series default
+ si la recursión es muy profunda.
+\end_layout
+
+\begin_layout Standard
+El
+\series bold
+árbol de recursión
+\series default
+ es una representación gráfica de un algoritmo recursivo, en el que cada
+ llamada se representa con un nodo, etiquetado con los parámetros que recibe,
+ y de este parte un nodo hijo por cada llamada que hace la función a sí
+ misma, siendo el nodo raíz la llamada inicial y los nodos hoja ejecuciones
+ de los casos base.
+ Este árbol sirve para decidir si el enfoque recursivo es apropiado o es
+ mejor buscar otro enfoque como el iterativo.
+\end_layout
+
+\begin_layout Standard
+El mecanismo de
+\series bold
+expansión de recurrencias
+\series default
+ sirve para calcular el tiempo de ejecución de un algoritmo recursivo.
+ Para ello, se crea una
+\series bold
+ecuación de recurrencia
+\series default
+, una función que define el tiempo de ejecución en función de los parámetros
+ y se contiene a sí misma en la definición, y por inducción se obtiene una
+
+\series bold
+forma cerrada
+\series default
+ para esta ecuación, que no dependa de sí misma.
+\end_layout
+
+\begin_layout Standard
+La recursión por lo general es más ineficiente que el diseño iterativo,
+ por lo que no se debe usar cuando la recursividad es por cola, el árbol
+ de recursión es lineal o el árbol es ramificado pero con nodos repetidos.
+\end_layout
+
+\end_body
+\end_document