!"#$%#&'(%" *& +$,'$%-%.(/0 1 &"#$2.#2$%" *& *%#," 3$%*, &0 40'&0(&$5% 406,$-78.% 3$%*, &0 9&.0,:,'5%" *& :% 406,$-%.(/0 !"#$%&$'"(&) +" ,"(-.$/"0 1 230&"'$0 3(4)%'567)0
H
!"#$%#&'(%" *& +$,'$%-%.(/0 I*1/&$>;/. $>%&"D#/. - &%3:&.$#/. !"#$%& ()*%+ ,%-%. !/.) 012"3$/ 4"-/&1" 5/*%6"2/ 7#%*%+8*.$9:2%69%. 2;"-/&1"8*.$9:2%69%. <%="&>";%2>/ 6% ?%21:"7%. @ A$.>%;". 02B/&;CD3/.
!"#$%#&'(%" *& +$,'$%-%.(/0 8(+37"
;0*(.& ›
Introducción
›
Diseño de algoritmos recursivos
›
›
¿Qué son los algoritmos recursivos?
›
Diseño de algoritmos recursivos
›
Ejemplos de algoritmos recursivos
Diseño de algoritmos iterativos ›
¿Qué son los algoritmos iterativos?
›
Diseño de algoritmos iterativos
›
Ejemplos de algoritmos iterativos
›
Traducción de algoritmos recursivos a iterativos
›
Catálogo de algoritmos
›
Bibliografía
!"#$%#&'(%" *& +$,'$%-%.(/0 9:/"6;)0 -"("%$<"0
<=>&8?," ›
Entender las principales características del diseño recursivo
›
Entender las ventajas y desventajas del diseño recursivo
› Aprender a diseñar algoritmos recursivos › Advertir su importancia en el contexto de las abstracciones de datos ›
Entender las principales características del diseño iterativo
›
Entender las ventajas y desventajas del diseño iterativo
› Aprender a diseñar algoritmos iterativos › Advertir su importancia en el contexto de las abstracciones de datos › Aprender a transformar algoritmos recursivos en iterativos
!"#$%#&'(%" *& +$,'$%-%.(/0 =(&%)+.773>(
40#$,*2..(/0 ?)+) $<-)%3&') #%"&"(+" <$ %"$<3@$73>( +" $<-A( 6#) +" &$%"$ ) 75<7.<)B ,$0 '50 +" <$0 ;"7"0C 03 +37D$ &$%"$ () "0 &%3;3$
(C E." 0" 7)()7" 7)') 7)(+373>( +" &"%'3($73>(B F0"(73$<'"(&"C D$1 +)0 4)%'$0 +" +30"G$% $<-)%3&')0 E." +"0$%%)<<"( &$%"$0 %"#"66;$0C E." ;"%"')0 "( "0&" &"'$ 1$ E." %"#%"0"(&$( "0&%$&"-3$0 +34"%"(&"0 #$%$ %"0)<;"% "< '30') #%):<"'$H <$ %"7.%03;3+$+ 1 <$ 3&"%$73>( I. Diseño recursivo de algoritmos
Estrategias de programación
F< #%):<"'$ 0" %"0."<;" #)% "< +30"G) +" 4.(73)("0 E." %"7.%%"( 0):%" 03 '30'$0 +" 4)%'$ +3%"7&$ ) 3(+3%"7&$B 2. 7)(0&%.773>( 0" :$0$ "( <$ "<"773>( +" .($ 4$'3<3$ +" 7$0)0 :$0"C &%3;3$<"0 +" %"0)<;"% 1 .($ 7)<"773>( +" 7$0)0 %"7.%03;)0 E." 7)(;"%/$( D$73$ <)0 7$0)0 :$0" 1 E." "( 0.'$ +"( 7):"%&.%$ $ &)+) "< "0#"7&%) +" #)03:<"0 #$%5'"&%)0 +" "(&%$+$
II. Diseño iterativo de algoritmos
F< #%):<"'$ 0" %"0."<;" #)% $#<37$73>( +" 0"(&"(73$0 +" 7)(&%)< +" I./) +" #%)-%$'$ 0):%" "0&%.7&.%$0 +" +$&)0 E." %"#%"0"(&$( <$ "(&%$+$ ) 0$<3+$ +"< '30')B F( "0&" 7$0) <$ <<$'$+$ $ )&%$ 4.(73)("0 +"(&%) +" .($ 4.(73>( 0" +":" $ 7%3&"%3)0 +" +"07)'#)0373>( ')+.<$% 1 () 0" $#<37$ %"7.%03;3+$+ #$%$ %"0)<;"% "< #%):<"'$
!"#$%#&'(%" *& +$,'$%-%.(/0 =(&%)+.773>(
40#$,*2..(/0 I. Diseño recursivo Diseño recursivo
,)0 $<-)%3&')0 +" +30"G) %"7.%03;) #"%'3&"( %"0)<;"% .( #%):<"'$ 3(;)7$(+) +"(&%) +"< 7."%#) +" .($ 4.(73>( J +3%"7&$ ) 3(+3%"7&$'"(&" J (.";$'"(&" $ <$ #%)#3$ 4.(73>( 0):%" .( 7)(/.(&) +" #$%5'"&%)0 $7&.$<"0 +34"%"(&"0B K( +30"G) $+"7.$+) +" "0&" 6#) +" $<-)%3&')0 +":" -$%$(6@$% E." <$ "/"7.73>( +" <$ 4.(73>( 7)( .()0 #$%5'"&%)0 $+"7.$+)0 7)(;"%/$ $ <$ 0)<.73>( +" '$("%$ E." 0" -$%$(67" <$ L($<3@$73>( +"< '30') !"# %&'#()!&* +!"# ", !% +" .. /, )0#1)" 23 0*40 )0#1)" " 5 %&'#()!&* +" 6 2,3 7
Diseño iterativo
8&'#()!&* +9, . . . . . . .
9 5 9 5 9 5 9 5 9 5 9 5 2
!
Para resolver la función factorial se vuelve a invocar a la función factorial con valor n – 1 y se devuelve el resultado de multiplicar el valor devuelto de esta invocación por n
%&'#()!&* +:, : 5 %&'#()!&* +;, : 5 ; %&'#()!&* +<, : 5 ; 5 < 5 %&'#()!&* +2, : 5 ; 5 < 5 2 5 %&'#()!&* +/, : 5 ; 5 < 5 2 5 2
!"#$%#&'(%" *& +$,'$%-%.(/0 =(&%)+.773>(
40#$,*2..(/0 I. Diseño iterativo Diseño recursivo
Diseño iterativo
,)0 $<-)%3&')0 3&"%$6;)0 0)( $E."<<)0 E." 0" 7)(0&%.1"( $ #$%6% +" .($ 0"7."(73$ )%+"($+$ +" 3(0&%.773)("0 +" $<&) (3;"(B F( 7)(7%"&) 0" +306(-."( 3(0&%.773)("0 +" 7)(&%)< +" I./) 7)(+373)($< J E." 0"<"773)($( .( 7$'3() +" "/"7.73>( +" "(&%" ;$%3)0 #)03:<"0 J " 3&"%$6;) J E." %"#3&"( <$ "/"7.73>( +" .( :<)E." +" 3(0&%.773>( '3"(&%$0 0" 0$604$-$( 73"%&$0 7)(+373)("0 $':3"(&$<"0B K( +30"G) $+"7.$+) +" "0&" 6#) +" $<-)%3&')0 +":" -$%$(6@$% <$ &"%'3($73>( +"< '30') !"# %&'#()!&* +!"# ", !"# !"=0> . 23 !"# )041*# . 23 ?@!*0 +!"=0> A. ", )041*# . )041*# 5 !"=0>3 !"=0> BB3 7 7 8&'#()!&* +9,
!
Para resolver la función factorial se procede iterativamente acumulando en la variable result el producto del contador index de cada iteración por el resultado acumulado anterior
!"=0>
2
<
;
:
9
)041*#
2
<
C
<:
2
!"#$%#&'(%" *& +$,'$%-%.(/0 !30"G) +" $<-)%3&')0 %"7.%03;)0
@A2B ",0 :," %:',$(#-," $&.2$"(?,"C K( $<-)%3&') %"7.%03;) "0 $E."< E." 0" 3(;)7$ $ 03 '30') +"(&%) +" 0. #%)#3) 7."%#) 7)( .()0 #$%5'"&%)0 $7&.$<"0 +306(&)0B F0&%.7&.%$<'"(&" 7$+$ 4.(73>( "0&5 4)%'$+$ #)% .($ 7)<"773>( +" $<&"%($6;$0 +30/.(&$0 <<$'$+$0 7$0)0 7)( -.$%+$0 "N#%"0$+$0 "( &O%'3()0 +" <)0 #$%5'"&%)0 +"< #%):<"'$B ,)0 7$0)0 :$0" %"0."<;"( "< #%):<"'$ +" 4)%'$ 3('"+3$&$ '3"(&%$0 E." <)0 )&%)0 %"7.%%"( 7)'#)036;$'"(&" 0):%" <$ 4.(73>(
!"D2&-% '&0&$%: *& 20 %:',$(#-, $&.2$"(?, Función recursiva D) %1"'!E" +D> >, !% +04F&4(G&402 +>,, )0#1)" AA)04(*1'!E" !"H0=!& 2II JJJ !% +04F&4(G&40K +>,, )0#1)" AA)04(*1'!E" !"H0=!& KII
Casos
F< +30"G) %"E.3"%" <$ +"L(373>( +" .($ 7)<"773>( +" 7$0)0 E." +"( 7):"%&.%$ $ &)+$ "(&%$+$ <"-M6'$ +" #$%5'"&%)0
Casos base
!% +04F&4(L0'1)4!M(2 +>,, )0#1)" AA)04(*1'!E" )0'1)4!M& '("M0)N0"#0 2II JJJ !% +04F&4(L0'1)4!M(O +>,, )0#1)" AA)04(*1'!E" )0'1)4!M& '("M0)N0"#0 OII
Casos recursivos
7
Guarda
,$ -.$%+$ +"< 7$0) %"I"/$ <$0 7)(+373)("0 $':3"(&$<"0 E." +":"( 0$604$7"%0" #$%$ "/"7.&$% "< 7$0)B F0&5( "N#%"0$+$0 "( &O%'3()0 +" <)0 #$%5'"&%)0 1 +":"( 0"% +30/.(&$0 "(&%" 0M
Resolución
,$ %"0)<.73>( +" .( 7$0) 3(+37$ <$0 $773)("0 E." +":"( "4"7&.$%0" #$%$ %"0)<;"% "< 7$0)B 23 "0 :$0" <$ %"0)<.73>( "0 3('"+3$&$ 03 "0 %"7.%03;$ 7)(030&" "( <$ $#<37$73>( +" .($ 7)'#)0373>( +" <<$'$+$0 %"7.%03;$0
!"#$%#&'(%" *& +$,'$%-%.(/0 !30"G) +" $<-)%3&')0 %"7.%03;)0
E("&F, *& %:',$(#-," $&.2$"(?," P)') D"')0 ;30&)C <$ &$%"$ +" +30"G) +" .($ 4.(73>( %"7.%03;$ 7)(030&" "( <$ +"L(373>( +" <$ 7)<"773>( +" 7$0)0 :$0" 1 7$0)0 %"7.%03;)0 E." %"0."<;$( 0$604$7&)%3$'"(&" "< #%):<"'$B Q 7)(6(.$73>( +307.6')0 "< 7)%%"7&) +30"G) +" 7$+$ 6#) +" 7$0)
E("&F, *& .%"," =%"& K( 7$0) :$0" %"#%"0"(&$ "< L($< +" .($ &$%"$C 1$ E." () %"E.3"%" +" (.";$0 <<$'$+$0 %"7.%03;$0 #$%$ 0. %"0)<.73>( +":3+) $ 0. 0"(73<<"@B P.$(+) +30"G$')0 <)0 7$0)0 :$0" +" .( $<-)%3&') %"7.%03;) +":"')0 $0"-.%$%()0 +" E." <$0 -.$%+$0 +" &)+)0 "<<)0 0)( +30/.(&$0 "(&%" 0M 1 +" E." "( 0.'$ +$( 7):"%&.%$ $ &)+$0 <$0 #)03:<"0 3(;)7$73)("0 #%);"(3"(&"0 +" $<-A( 7$0) %"7.%03;) Caso base
?)+$ 3(;)7$73>( %"7.%03;$ &"%'3($ #)% $#<37$73>( +"< A(37) 7$0) :$0" 7)( -.$%+$ (RRSB Q ;"7"0 "0 #)03:<" :$<$(7"$% <)0 7$0)0 +" .( +30"G) %"7.%03;) "(&%" <)0 :$0" 1 <)0 #%)#3$'"(&" %"7.%03;)0 03( 3'#$7&) "( <$ 0)<.73>(B P)(03+"%" E." )&%$ 0)<.73>( D.:3"%$ 03+) +"L(3% "< 7$0) :$0" 7)( <$ -.$%+$ (TU
!"# %&'#()!&* +!"# ", !% +" .. /, )0#1)" 23 0*40 )0#1)" " 5 %&'#()!&* +" 6 2,3 7
!"#$%#&'(%" *& +$,'$%-%.(/0 !30"G) +" $<-)%3&')0 %"7.%03;)0
E("&F, *& %:',$(#-," $&.2$"(?," P)') D"')0 ;30&)C <$ &$%"$ +" +30"G) +" .($ 4.(73>( %"7.%03;$ 7)(030&" "( <$ +"L(373>( +" <$ 7)<"773>( +" 7$0)0 :$0" 1 7$0)0 %"7.%03;)0 E." %"0."<;$( 0$604$7&)%3$'"(&" "< #%):<"'$B Q 7)(6(.$73>( +307.6')0 "< 7)%%"7&) +30"G) +" 7$+$ 6#) +" 7$0)
E("&F, *& .%"," $&.2$"(?," K( 7$0) %"7.%03;) 7)(0&$ +" &%"0 "<"'"(&)0H .($ +3;303>( +"< #%):<"'$ "( .() ) '50 0.:#%):<"'$0C .($ 3(;)7$73)("0 %"7.%03;$ #$%$ %"0)<;"% 7$+$ .() +" "0&)0 0.:#%):<"'$0 1 .($ 7)':3($73>( +" <)0 %"0.<&$+)0 +" <)0 0.:#%):<"'$0 #$%$ ):&"("%C $ <$ ;."<&$ +" <$0 3(;)7$73)("0 %"7.%03;$0C "< %"0.<&$+) +"< #%):<"'$ )%3-3($( +"< #%):<"'$ 7)(;"%-" D$73$ $<-.() +" <)0 7$0)0 :$0" +" <$ 4.(73>( División Caso recursivo
QE.M "< A(37) 7$0) %"7.%03;) "0 $E."< 7)( -.$%+$ 3'#( 7)(030&" "( .($ +3;303>( 7)(;"%-"(&" D$73$ (RRS +":3+) $ <$ "N#%"03>( +" +3;303>( +"< #%):<"'$
!"# %&'#()!&* +!"# ", !% +" .. /, )0#1)" 23 0*40 )0#1)" " 5 %&'#()!&* +" 6 2,3 7
,$ 4.(73>( +" +3;303>( -"("%$ $ 7$+$ #$0) +" %"7.%03>( .( 0.:#%):<"'$ +" &$'$G) .($ .(3+$+ '"()% E." 7)(;"%-" $ S
Recursión Combinación
,$ 4.(73>( +" 7)':3($73>( "( "0&" 7$0) E." #"%'3&" %"0)<;"% "< #%):<"'$ $ #$%6% +" <)0 %"0.<&$+)0 #$%73$<"0 +" 7$+$ 0.:#%):<"'$ "0 <$ )#"%$73>( #%)+.7&)
,$ %"7.%03>( 0" $#<37$ #$%$ %"0)<;"% "< 0.:#%):<"'$ +" &$'$G) (WX
!"#$%#&'(%" *& +$,'$%-%.(/0 !30"G) +" $<-)%3&')0 %"7.%03;)0
E("&F, *& %:',$(#-," $&.2$"(?," P)') D"')0 ;30&)C <$ &$%"$ +" +30"G) +" .($ 4.(73>( %"7.%03;$ 7)(030&" "( <$ +"L(373>( +" <$ 7)<"773>( +" 7$0)0 :$0" 1 7$0)0 %"7.%03;)0 E." %"0."<;$( 0$604$7&)%3$'"(&" "< #%):<"'$B Q 7)(6(.$73>( +307.6')0 "< 7)%%"7&) +30"G) +" 7$+$ 6#) +" 7$0)
E("&F, *& .%"," $&.2$"(?," K( 7$0) %"7.%03;) 7)(0&$ +" &%"0 "<"'"(&)0H .($ +3;303>( +"< #%):<"'$ "( .() ) '50 0.:#%):<"'$0C .($ 3(;)7$73)("0 %"7.%03;$ #$%$ %"0)<;"% 7$+$ .() +" "<<)0 1 .($ 7)':3($73>( +" <)0 %"0.<&$+)0 +" <)0 0.:#%):<"'$0 #$%$ ):&"("%C $ <$ ;."<&$ +" <$0 3(;)7$73)("0 %"7.%03;$0C "< %"0.<&$+) +"< #%):<"'$ )%3-3($
F< (A'"%) +" 3(;)7$73)("0 %"$<3@$+$0 "( 7$+$ 7$0) %"7.%03;) '$%7$ .( 7%3&"%3) +" 7<$03L7$73>( Clasificaciones de recursividad
II. Por la forma de partición
,$ 4)%'$ +" +3;3+3% "< #%):<"'$ "( 0.:#%):<"'$0 "0 )&%) 7%3&"%3) +" 7<$03L7$73>( III. Por la forma de combinación
,$ 4)%'$ +" 7)':3($% <)0 %"0.<&$+)0 #$%73$<"0 +" <$ %"0)<.73>( +" 7$+$ 0.:#%):<"'$ "0 "< &"%7"% 7%3&"%3)
Recursividad simple
&%>:&2 2 J B K2LMN
Recursividad múltiple
&%>:&2 B K2LMN O P O B K2LQN
Partición por substracción
&%>:&2 2 J B K2LMN
Partición por división
&%>:&2 B K2RHN
Recursividad final
&%>:&2 B K2RHN
Recursividad no final
&%>:&2 2 J B K2LMN
!"#$%#&'(%" *& +$,'$%-%.(/0 !30"G) +" $<-)%3&')0 %"7.%03;)0
E("&F, *& %:',$(#-," $&.2$"(?," P)') D"')0 ;30&)C <$ &$%"$ +" +30"G) +" .($ 4.(73>( %"7.%03;$ 7)(030&" "( <$ +"L(373>( +" <$ 7)<"773>( +" 7$0)0 :$0" 1 7$0)0 %"7.%03;)0 E." %"0."<;$( 0$604$7&)%3$'"(&" "< #%):<"'$B Q 7)(6(.$73>( +307.6')0 "< 7)%%"7&) +30"G) +" 7$+$ 6#) +" 7$0)
E("&F, *& $&.2$"(?(*%* +,$ (0-&$"(/0 Q ;"7"0 "< +30"G) +" .($ 4.(73>( %"7.%03;$ 0" "N#%"0$ 7)') .($ 3(;)7$73>( 7)(7%"&$ +" .($ 4.(73>( '50 -"("%$< E." 3(7<.1" #$%5'"&%)0 $+373)($<"0B F0&$ &O7(37$C 7)()73+$ #)% "< ()':%" +" +30"G) #)% 3('"%03>(C 0" $#<37$ #)% +306(&$0 7."06)("0 E." +307.6%"')0 $ 7)(6(.$73>( La inmersión es una estrategia de diseño mediante la cual una función se expresa como una invocación particular de otra función más general con parámetros adiciones
Función sumergida
,$ 4.(73>( 0.'"%-3+$ 0" "N#%"0$ 7)') .($ 3(;)7$73>( 7)(7%"&$ +" <$ 4.(73>( 3('"%0)%$ '50 -"("%$<
!"# 41H&D(=(4 +!"# MPQ, )0#1)" 41H&R04=0 +MS /,3 7 !"# 41H&R04=0 +!"# MPQS !"# !"=0>, - JJJ 7
Función inmersora
,$ 4.(73>( 3('"%0)%$ 0.'"%-" $ <$ )%3-3($< #."0&) E."C $< 0"% '50 -"("%$( #$%67.<$% +" O0&$ 0" +$ 7):"%&.%$ $< #%):<"'$
!"#$%#&'(%" *& +$,'$%-%.(/0 !30"G) +" $<-)%3&')0 %"7.%03;)0
E("&F, *& %:',$(#-," $&.2$"(?," P)') D"')0 ;30&)C <$ &$%"$ +" +30"G) +" .($ 4.(73>( %"7.%03;$ 7)(030&" "( <$ +"L(373>( +" <$ 7)<"773>( +" 7$0)0 :$0" 1 7$0)0 %"7.%03;)0 E." %"0."<;$( 0$604$7&)%3$'"(&" "< #%):<"'$B Q 7)(6(.$73>( +307.6')0 "< 7)%%"7&) +30"G) +" 7$+$ 6#) +" 7$0)
E("&F, *& $&.2$"(?(*%* +,$ (0-&$"(/0 Q ;"7"0 "< +30"G) +" .($ 4.(73>( %"7.%03;$ 0" "N#%"0$ 7)') .($ 3(;)7$73>( 7)(7%"&$ +" .($ 4.(73>( '50 -"("%$< E." 3(7<.1" #$%5'"&%)0 $+373)($<"0B F0&$ &O7(37$C 7)()73+$ #)% "< ()':%" +" +30"G) #)% 3('"%03>(C 0" $#<37$ #)% +306(&$0 7."06)("0 E." +307.6%"')0 $ 7)(6(.$73>( I.I. Parámetros de recorrido I. Inmersión de parámetros
Táctica de inmersión
,$ 3('"%03>( +" #$%5'"&%)0 0" %"L"%" $ <$ $#<37$73>( +" <$ &O7(37$ +" 3('"%03>( 0):%" <)0 #$%5'"&%)0 +" "(&%$+$ +" <$ '30'$B FN30&"( U 6#)0 +"(&%) +" "0&$ 7$&"-)%M$
II. Inmersión de resultados
,$ 3('"%03>( +" %"0.<&$+)0 7)(030&" "( <$ $#<37$73>( +" <$ &O7(37$ +" <$ 3('"%03>( #$%$ $7.'.<$% "( #$%5'"&%)0 "< %"0.<&$+) +"< #%):<"'$ "( <<$'$+$ %"7.%03;$
2" 3(7<.1"( #$%5'"&%)0 "( <$ 4.(73>( +" 3('"%0)%$ E." 7)(&%)<$( "< %"7)%%3+) +" <)0 "<"'"(&)0 +" .($ "0&%.7&.%$ +" +$&)0 I.II. Parámetros acumuladores
2" 3(7<.1"( #$%5'"&%)0 "( <$ 4.(73>( +" 3('"%0)%$ E." $7.'.<$( %"0.<&$+)0 3(&"%W '"+3)0
!"#$%#&'(%" *& +$,'$%-%.(/0 !30"G) +" $<-)%3&')0 %"7.%03;)0
E("&F, *& %:',$(#-," $&.2$"(?," P)') D"')0 ;30&)C <$ &$%"$ +" +30"G) +" .($ 4.(73>( %"7.%03;$ 7)(030&" "( <$ +"L(373>( +" <$ 7)<"773>( +" 7$0)0 :$0" 1 7$0)0 %"7.%03;)0 E." %"0."<;$( 0$604$7&)%3$'"(&" "< #%):<"'$B Q 7)(6(.$73>( +307.6')0 "< 7)%%"7&) +30"G) +" 7$+$ 6#) +" 7$0)
E("&F, *& $&.2$"(?(*%* +,$ (0-&$"(/0 Q ;"7"0 "< +30"G) +" .($ 4.(73>( %"7.%03;$ 0" "N#%"0$ 7)') .($ 3(;)7$73>( 7)(7%"&$ +" .($ 4.(73>( '50 -"("%$< E." 3(7<.1" #$%5'"&%)0 $+373)($<"0B F0&$ &O7(37$C 7)()73+$ #)% "< ()':%" +" +30"G) #)% 3('"%03>(C 0" $#<37$ #)% +306(&$0 7."06)("0 E." +307.6%"')0 $ 7)(6(.$73>( I. Inmersión por diseño
2" $#<37$( &O7(37$0 +" 3('"%03>( 7)( "< ):/"&) +" +"L(3% .($ %"7.%03>( E." +" )&%) ')+) () 0"%M$ #)03:<" $%67.<$% II. Inmersión por eficiencia Objetivos de inmersión
2" $#<37$( &O7(37$0 +" 3('"%03>( 7)( "< L( +" 7)(0"-.3% .($ "/"7.73>( '50 "L73"(&" +" <$ 4.(73>( "( <$ %"0)<.73>( +"< #%):<"'$ III. Inmersión por recursión final
2" $#<37$( &O7(37$0 +" 3('"%03>( 7)( "< 5(3') +" &%$(04)%'$% <$ %"7.%03;3+$+ "( %"7.%03>( L($<
!"#$%#&'(%" *& +$,'$%-%.(/0 !30"G) +" $<-)%3&')0 %"7.%03;)0
E("&F, *& %:',$(#-," $&.2$"(?," P)') D"')0 ;30&)C <$ &$%"$ +" +30"G) +" .($ 4.(73>( %"7.%03;$ 7)(030&" "( <$ +"L(373>( +" <$ 7)<"773>( +" 7$0)0 :$0" 1 7$0)0 %"7.%03;)0 E." %"0."<;$( 0$604$7&)%3$'"(&" "< #%):<"'$B Q 7)(6(.$73>( +307.6')0 "< 7)%%"7&) +30"G) +" 7$+$ 6#) +" 7$0)
E("&F, *& $&.2$"(?(*%* +,$ (0-&$"(/0 Q ;"7"0 "< +30"G) +" .($ 4.(73>( %"7.%03;$ 0" "N#%"0$ 7)') .($ 3(;)7$73>( 7)(7%"&$ +" .($ 4.(73>( '50 -"("%$< E." 3(7<.1" #$%5'"&%)0 $+373)($<"0B F0&$ &O7(37$C 7)()73+$ #)% "< ()':%" +" +30"G) #)% 3('"%03>(C 0" $#<37$ #)% +306(&$0 7."06)("0 E." +307.6%"')0 $ 7)(6(.$73>( Táctica
Diseño s o v i t e j b O
Eficiencia
R. Final
Recorrido
Acumulación
Resultados
2" $#<37$ #$%$ ):&"("% %"7.%%"(73$0 7)( "0&%.7&.%$0 +" +$&)0 "0&567$0 ) #$%5'"&%)0 7)(0&$(&"0 +.%$(&" <$ "/"7.73>(
W
W
W
F0&$ &5767$ +" 3('"%03>( 0" $#<37$ #$%$ #%"7$<7.<$% 1 $7.'.<$% .( ;$<)% +" "(&%$+$ +" '$("%$ E." 0" $D)%%" "( 6"'#) ) '"')%3$
F0&$ &5767$ +" 3('"%03>( 0" $#<37$ #$%$ 7$<7.<$% 1 .6<3@$% .( %"0.<&$+) #$%73$
W
2" 3(7<.1"( #$%5'"&%)0 +" $7.'.<$73>( #$%$ ";3&$% &"("% E." 7)':3($% &%$0 <$ "/"7.73>( +" <$0 %"7.%03)("0 +" 7$+$ 0.:#%):<"'$
W
!"#$%#&'(%" *& +$,'$%-%.(/0 !30"G) +" $<-)%3&')0 %"7.%03;)0
E("&F, *& %:',$(#-," $&.2$"(?," P)') D"')0 ;30&)C <$ &$%"$ +" +30"G) +" .($ 4.(73>( %"7.%03;$ 7)(030&" "( <$ +"L(373>( +" <$ 7)<"773>( +" 7$0)0 :$0" 1 7$0)0 %"7.%03;)0 E." %"0."<;$( 0$604$7&)%3$'"(&" "< #%):<"'$B Q 7)(6(.$73>( +307.6')0 "< 7)%%"7&) +30"G) +" 7$+$ 6#) +" 7$0)
!>&$.(.(," I. Función factorial !30"G" .($ 4.(73>( E." 7$<7.<" "< 4$7&)%3$< +" .( (A'"%)B !"&"%'3(" "< 6#) +" %"7.%03;3+$+ +" E." 0" &%$&$ 0"-A( <$0 Y 7<$03L7$73)("0 $(&"%3)%"0
IV. Suma de N naturales !30"G" .($ 4.(73>( %"7.%03;$ E." 7$<7.<" <$ 0.'$ +" <)0 ( #%3'"%)0 (A'"%)0 ($&.%$<"0B ZF0 %"7.%03;$ 03'#<"[ Z"0 L($<[
VII. Búsqueda en vector !30"G" .($ 4.(73>( %"7.%03;$ E." :.0E." .( "<"'"(&) +"(&%) +" .( ;"7&)% +" "(&"%)0B P<$03LE." <$ 4.(73>(
II. Serie de fibonacci P$+$ ;$<)% +" <$ 0"%3" +" L:)($773 0" ):6"(" $ #$%6% +" <$ 0.'$ +" <)0 +)0 $(&"%3)%"0B ,)0 +)0 #%3'"%)0 "<"'"(&)0 +" <$ 0"%3" 0)( X
V. Suma de un vector !30"G" .($ 4.(73>( %"7.%03;$ E." 7$<7.<" <$ 0.'$ +" <)0 ( #%3'"%)0 "<"'"(&)0 +" .( ;"7&)% +" "(&"%)0B P<$03LE." <$ 4.(73>(
VIII. Elementos repetidos !30"G" .( #%"+37$+) %"7.%03;) E." +"&"%'3(" 03 .( ;"7&)% +" "(&"%)0 7)(6"(" ) () $<-A( "<"'"(&) %"#"6+)
III. Potencia de un número P$<7.<" <$ (W"03'$ #)&"(73$ +" .( (A'"%) '"+3$(&" "< +30"G) +" .($ 4.(73>( %"7.%03;$B P<$03LE." "< +30"G) 7)( %"0#"7&) $ <)0 7%3&"%3)0 $(&"%3)%"0
VI. Producto escalar !30"G" .($ 4.(73>( %"7.%03;$ E." 7$<7.<" "< #%)+.7&) "07$<$% +" +)0 ;"7&)%"0 +" "(&"%)0B P<$03LE." <$ 4.(73>(
IX. Máximo común divisor !30"G" .($ 4.(73>( %"7.%03;$ E." 7$<7.<" "< '5N3') 7)'A( +3;303)% "(&%" +)0 "(&"%)0 #)% $#<37$73>( +"< $<-)%3&') +" F.7<3+"0
!"#$%#&'(%" *& +$,'$%-%.(/0 !30"G) +" $<-)%3&')0 3&"%$6;)0
@A2B ",0 :," %:',$(#-," (#&$%8?,"C F( <)0 $<-)%3&')0 3&"%$6;)0 <)0 #%):<"'$0 0" %"0."<;"( '"+3$(&" <$ "07%3&.%$ +" .($ 7)<"773>( +" 3(0&%.773)("0 +" #%)#>03&) "0#"7ML7) E." 0" "/"7.&$( +" '$("%$ 0"7."(73$< 0"-A( "< )%+"( "( E." 0" D$( "07%3&)B Q<-.($0 +" "0&$0 3(0&%.773)("0 #"%'3&"( $<&"%$% "< 7)(&%)< 0"7."(73$< +" <$ "/"7.73>( #$%$ $%67.<$% I./)0 3&"%$6;)0 ) 7)(+373)($<"0 +" "/"7.73>(
!"D2&-% '&0&$%: *& 20 %:',$(#-, (#&$%8?, Inicialización !"# 04#T +DPQ MS D 0, !"# !"=0> . /3 U((*0&" %(1"= . %&*403
,$ 3(373$<3@$73>( "0 "< #$0) #%"<3'3($% #$%$ #%)7"+"% 7)( "< +30"G) 3&"%$6;) +" $<-)%3&')0
?@!*0 +V%(1"= WW !"=0> A MJ*0"N#@, -
Iteración
,)0 $<-)%3&')0 3&"%$6;)0 :$0$( 0. 4.(73)($'3"(&) "( 3&"%$73)("0 +" :<)E."0 +" 7>+3-) -"("%$<'"(&" $#<37$+$0 0):%" "<"'"(&)0 +" "0&%.7&.%$0 +" +$&)0
%(1"= . +M P!"=0>Q .. 0,3
Bifurcación
!% +V%(1"=, !"=0>BB3
,$0 3(0&%.773)("0 +" 7)(&%)< +" I./) 7)(+373)($< #"%'3&"( "/"7.&$% 0"(&"(73$0 0)<) :$/) +"&"%'3($+$0 7)(+373)("0 $':3"(&$<"0
7 !% +%(1"=, )0#1)" !"=0>3 0*40 )0#1)" X23 7
Secuenciamiento
,$ 7$%$7&"%M067$ "0"(73$< +"< +30"G) 3&"%$6;) %$+37$ "( "< 7)(7"#&) +" 0"7."(73$ +" 3(0&%.773)("0 "/"7.&$+$0 "( )%+"( 1 "( "< .0) +" ;$%3$:<"0 #$%$ $7.'.<$% "0&$+)0 #$%73$<"0
!"#$%#&'(%" *& +$,'$%-%.(/0 !30"G) +" $<-)%3&')0 3&"%$6;)0
E("&F, *& %:',$(#-," (#&$%8?," F< +30"G) 3&"%$6;) .6<3@$ 3(0&%.773)("0 E." #%"07%3:"( 7>') %"$<3@$% <)0 75<7.<)0 ) &$%"$0 ("7"0$%3$0 #$%$ <<"-$% $< %"0.<&$+) :.07$+)B F0&$0 3(0&%.773)("0 0" "/"7.&$( +" $7."%+) $ I./)0 +" "/"7.73>(C E." #."+"( 0"% 0"7."(73$<"0C :34.%7$6;)0 " 3&"%$6;)0B ,$ .6<3@$73>( +" ;$%3$:<"0 1 <$ 0"(&"(73$ +" $03-($73>( /."-$( .( #$#"< #%"#)(+"%$(&"
!:&-&0#," *& 20 %:',$(#-, (#&$%88?, I. Sentencias de asignación
s o l e s s d o o m v s t i o i r t t a n o r e e l g t m a i e l E
,$ 0"(&"(73$ +" $03-($73>( /."-$( .( #$#"< #%"#)(+"%$(&" "( "< +30"G) 3&"%$6;) 1$ E." #"%'3&" $7.'.<$% 75<7.<)0 #$%73$<"0 E." %"#%"0"(&$( "< "0&$+) +"< $<-)%3&') "( "0" #.(&) A. Encadenamiento secuencial
,$0 3(0&%.773)("0 0" "(7$+"($( 0"7."(73$<'"(&" #$%$ E." 0" "/"7.&"( .($ +"&%50 +" )&%$ II. Sentencias de control de flujo
,$ "/"7.73>( +" 3(0&%.773)("0 #."+" $%67.<$%0" "( 0"7."(73$C :34.%7$6;$'"(&" ) "( 3&"%$73>(B FN30&"( 0"(&"(73$0 E." #"%'3&"( +"&"%'3($% "< 7)(&%)< +" I./)
B. Control de flujo condicional
,$0 3(0&%.773)("0 0" $-%.#$( "( +)0 :<)E."0 E." 0" "/"7.&$( $<&"%($6;$'"(&" 03 0" 0$604$7" .($ 7)(+373>( C. Control de flujo iterativo
,$0 3(0&%.773)("0 0" $-%.#$( "( .( :<)E." E." 0" "/"7.&$ 3&"%$6;$'"(&" '3"(&%$0 0" 0$604$7" .($ 7)(+373>(
!"#$%#&'(%" *& +$,'$%-%.(/0 !30"G) +" $<-)%3&')0 3&"%$6;)0
E("&F, *& %:',$(#-," (#&$%8?," F< +30"G) 3&"%$6;) .6<3@$ 3(0&%.773)("0 E." #%"07%3:"( 7>') %"$<3@$% <)0 75<7.<)0 ) &$%"$0 ("7"0$%3$0 #$%$ <<"-$% $< %"0.<&$+) :.07$+)B F0&$0 3(0&%.773)("0 0" "/"7.&$( +" $7."%+) $ I./)0 +" "/"7.73>(C E." #."+"( 0"% 0"7."(73$<"0C :34.%7$6;)0 " 3&"%$6;)0B ,$ .6<3@$73>( +" ;$%3$:<"0 1 <$ 0"(&"(73$ +" $03-($73>( /."-$( .( #$#"< #%"#)(+"%$(&"
G&0#&0.(% *& %"('0%.(/0 F( "< +30"G) 3&"%$6;) <$0 ;$%3$:<"0 %"#%"0"(&$( $<'$7"("0 +" +$&)0 "( '"')%3$ E." 7)(6"("( "< ;$<)% %"0.<&$(&" +"< 7>'#.&) +" .($ "N#%"03>(B F0&" ;$<)% %"#%"0"(&$ #$%73$<'"(&" "< "0&$+) +"< $<-)%3&') "( 6"'#) +" "/"7.73>( "( 4.(73>( +" <)0 "<"'"(&)0 +" "(&%$+$ Estado
P$+$ 0"(&"(73$ 0.#)(" .( 7$':3) #)&"(73$< "( "< "0&$+) +" <$ '5E.3($B ,$ $03-($73>( #"%'3&" %"7)-"%<) #$%73$<'"(&" "( "< ;$<)% +" <$ ;$%3$:<"
Y0"#0"'!&3 M&)!&U*0 . 0>Z)04!E"3 Y0"#0"'!&3 Expresión y variable
,$ ;$%3$:<" "0 .($ %"4"%"(73$ 03':><37$ $ .( "0#"73) %"0"%;$+) "( '"')%3$B ,$ "N#%"03>( .($ 4>%'.<$ E." #"%'3&" 7$<7.<$% .( ;$<)% "( 4.(73>( +" )&%$0 ;$%3$:<"0 1 7)(0&$(&"0
Asignación
Q +34"%"(73$ +" 7>') )7.%%" "( $<-)%3&')0 %"7.%03;)0 <$0 0"(&"(73$0 +" $03-($73>( #"%'3&"( $#)1$%0" "( ;$%3$:<"0 #$%$ E." 0"$( %"4"%3+$0 #)0&"%3)%'"(&" +"0+" )&%)0 #.(&)0 +"< $<-)%3&')
!"#$%#&'(%" *& +$,'$%-%.(/0 !30"G) +" $<-)%3&')0 3&"%$6;)0
E("&F, *& %:',$(#-," (#&$%8?," F< +30"G) 3&"%$6;) .6<3@$ 3(0&%.773)("0 E." #%"07%3:"( 7>') %"$<3@$% <)0 75<7.<)0 ) &$%"$0 ("7"0$%3$0 #$%$ <<"-$% $< %"0.<&$+) :.07$+)B F0&$0 3(0&%.773)("0 0" "/"7.&$( +" $7."%+) $ I./)0 +" "/"7.73>(C E." #."+"( 0"% 0"7."(73$<"0C :34.%7$6;)0 " 3&"%$6;)0B ,$ .6<3@$73>( +" ;$%3$:<"0 1 <$ 0"(&"(73$ +" $03-($73>( /."-$( .( #$#"< #%"#)(+"%$(&"
!0.%*&0%-(&0#, "&.2&0.(%: F< ')+"<) +" "/"7.73>( #)% +"4"7&) "0 <$ "/"7.73>( 0"7."(73$( +" $7."%+) $< )%+"( "( E." $#$%"7"( 7)%%"<$6;$'"(&" "07%3&$0 "( "< $<-)%3&') Encadenamiento secuencial
Y0"#0"'!&3 Y0"#0"'!&3 Y0"#0"'!&3
F< +"<3'3&$+)% +" 0"(&"(73$0 0"#$%$ .($ 0"(&"(73$ +" <$ 03-.3"(&" +"(&%) +" .( :<)E." +" 3(0&%.773)("0 0"7."(73$< 1 #."+" 0"% 7)(03+"%$+) 7)') "< /=%&"6/& E." $%67.<$ "< "(7$+"($'3"(&) 0"7."(73$<
Ejecución en secuencia
,$ "/"7.73>( "( 0"7."(73$ 0" $<3("$ 7)( <$ 3+"$ +" E." 7$+$ 0"(&"(73$ %"$<3@$ .( #$0) +"< $<-)%3&') D$73$ <$ ):&"(73>( +"< %"0.<&$+) L($< 1 7)( <$ +"07)'#)0373>( 4.(73)($< +"07"(+"(&" +"< #$%$+3-'$ "0&%.7&.%$+)
!"#$%#&'(%" *& +$,'$%-%.(/0 !30"G) +" $<-)%3&')0 3&"%$6;)0
E("&F, *& %:',$(#-," (#&$%8?," F< +30"G) 3&"%$6;) .6<3@$ 3(0&%.773)("0 E." #%"07%3:"( 7>') %"$<3@$% <)0 75<7.<)0 ) &$%"$0 ("7"0$%3$0 #$%$ <<"-$% $< %"0.<&$+) :.07$+)B F0&$0 3(0&%.773)("0 0" "/"7.&$( +" $7."%+) $ I./)0 +" "/"7.73>(C E." #."+"( 0"% 0"7."(73$<"0C :34.%7$6;)0 " 3&"%$6;)0B ,$ .6<3@$73>( +" ;$%3$:<"0 1 <$ 0"(&"(73$ +" $03-($73>( /."-$( .( #$#"< #%"#)(+"%$(&"
H,0#$,: *& I2>, .,0*(.(,0%: ,$0 0"(&"(73$0 +" 7)(&%)< +" I./) 7)(+373)($< $<&"%$( <$ "/"7.73>( ()%'$< J 0"7."(73$< J +" .( $<-)%3&') #$%$ -"("%$% +306(&$0 :34.%7$73)("0 "/"7.&$:<"0 "( 4.(73>( +" 73"%&$0 7)(+373)("0 $':3"(&$<"0 4?!#'@ +0>Z)04!E", !% +0>Z)04!E"X*EN!'& , -
'&40 '#0X2\ AAU*([10X40"#0"'!&4II U)0&]3
AA U*([10X40"#0"'!&4II
'&40 '#0X<\ AAU*([10X40"#0"'!&4II U)0&]3
7 0*40 -
JJJ
AA U*([10X40"#0"'!&4II 7
=0%&1*#\ AAU*([10X40"#0"'!&4II 7
If – Then – Else
2" ";$( <>-37$B 23 "< %"0.<&$+) "0 73"%&) 0" "/"7.&$ "< #%3'"% :<)E." +" 0"(&"(73$0B 23 "0 4$<0) 0" "/"7.&$ "< 0"-.(+) :<)E." +" 0"(&"(73$0
Switch - Case
2" ";$(B 23 7)3(73+" 7)( <$ 7)(0&$(&" +"< 7$0) 3 0" "/"7.&$ "< :<)E." +" 0"(&"(73$0 $+/.(&)B 23 () 0" $/.0&$ $ (3(-A( 7$0) 0" "/"7.&$ "< :<)E." +" 0"(&"(73$0 +"4$.<&
!"#$%#&'(%" *& +$,'$%-%.(/0 !30"G) +" $<-)%3&')0 3&"%$6;)0
E("&F, *& %:',$(#-," (#&$%8?," F< +30"G) 3&"%$6;) .6<3@$ 3(0&%.773)("0 E." #%"07%3:"( 7>') %"$<3@$% <)0 75<7.<)0 ) &$%"$0 ("7"0$%3$0 #$%$ <<"-$% $< %"0.<&$+) :.07$+)B F0&$0 3(0&%.773)("0 0" "/"7.&$( +" $7."%+) $ I./)0 +" "/"7.73>(C E." #."+"( 0"% 0"7."(73$<"0C :34.%7$6;)0 " 3&"%$6;)0B ,$ .6<3@$73>( +" ;$%3$:<"0 1 <$ 0"(&"(73$ +" $03-($73>( /."-$( .( #$#"< #%"#)(+"%$(&"
H,0#$,: *& I2>, (#&$%8?, ,$0 0"(&"(73$0 +" 7)(&%)< +" I./) 3&"%$6;) $<&"%$( <$ "/"7.73>( ()%'$< J 0"7."(73$< J +" .( $<-)%3&') #$%$ -"("%$% +306(&$0 3&"%$73)("0 0):%" .( 7."%#) +" 0"(&"(73$0B F< (A'"%) +" 3&"%$73)("0 +"#"(+" +" 7)(+373)("0 $':3"(&$<"0 %() +&4!N"&'!E"X^"=!'03 0>Z)04!E"X*^H!#03
AA!"!'!&*!_&'!E"II
AA!"!'!&*!_&'!E"II
?@!*0 +0>Z)04!E"X*EN!'& , -
=( -
0>Z)04!E"X!"')0H0"#(, AA U*([10X40"#0"'!&4II 7
AA U*([10X40"#0"'!&4II
AA U*([10X40"#0"'!&4II
AA !"')0H0"#(II
AA !"')0H0"#(II 7 ?@!*0 +0>Z)04!E"X*EN!'& ,3
7
For
While
=&"%$73>( +" :<)E." +" 0"(&"(73$0 7)(&%)<$+$ #)% M(+37"B F< ;$<)% 3(373$< 0" 3(+37$ "( $03-($73>(W M(+37"C "< 3(7%"'"(&) "( "N#%"03>(W 3(7%"'"(&) 1 &"%'3($ 7.$(+) "N#%"03>(W
=&"%$73>( +" :<)E." 0" 0"(&"(73$0 '3"(&%$0 "N#%"03>(W<>-37$ 0"$ 73"%&$B =(373$<3@$73>( "N&"%($ $< :.7<"B =(7%"'"(&) "N#
Do - While
=&"%$73>( +" :<)E." +" 0"(&"(73$0B =(373$<3@$73>( "N&"%3)%B =(7%"'"(&) \#37$'"(&" $< L($< +"< :<)E."B P)'#%):$73>( <>-37$ $< L($< +" 7$+$ 3&"%$73>(B K($ "/"7.73>( $< '"()0
!"#$%#&'(%" *& +$,'$%-%.(/0 !30"G) +" $<-)%3&')0 3&"%$6;)0
E("&F, *& %:',$(#-," (#&$%8?," F< +30"G) 3&"%$6;) .6<3@$ 3(0&%.773)("0 E." #%"07%3:"( 7>') %"$<3@$% <)0 75<7.<)0 ) &$%"$0 ("7"0$%3$0 #$%$ <<"-$% $< %"0.<&$+) :.07$+)B F0&$0 3(0&%.773)("0 0" "/"7.&$( +" $7."%+) $ I./)0 +" "/"7.73>(C E." #."+"( 0"% 0"7."(73$<"0C :34.%7$6;)0 " 3&"%$6;)0B ,$ .6<3@$73>( +" ;$%3$:<"0 1 <$ 0"(&"(73$ +" $03-($73>( /."-$( .( #$#"< #%"#)(+"%$(&"
!>&$.(.(," F(7."(&%" .($ 0)<.73>( 3&"%$6;$ #$%$ 7$+$ .() +" <)0 #%):<"'$0 E." 0" #%"0"(&$%)( 7)( $(&"%3)%3+$+ `` a)0\ X2 A b A. *0"N#@
I.
Función factorial
Z1U*!' !"# 41H&c +!"#PQ M, -
II. Serie de fibonacci
!"# b . /3
III. Potencia de un número
!"# 4 . /3
IV. Suma de N naturales
?@!*0 +b A MJ*0"N#@, 4 . 4 B MPbQ3
V. Suma de un vector VI. Producto escalar
bBB3 7
VII. Búsqueda en vector
)0#1)" 43
VIII.Elementos repetidos
7
IX. Máximo común divisor
`` a(4#\ 4 . d MP!Q
*0"N#@ !./
!"#$%#&'(%" *& +$,'$%-%.(/0 ?%$+.773>( +" $<-)%3&')0 %"7.%03;)0 $ 3&"%$6;)0
9$%*2..(/0 *& %:',$(#-," $&.2$"(?," % (#&$%8?," ,)0 $<-)%3&')0 %"7.%03;)0 $.(E." "<"-$(&"0 1 "L7$7"0 D$( #%"0"(&$+) #%):<"'$0 D30&>%37)0 +" 7)'#.&$:3<3+$+ 1$ E." "< 0)#)%&" #)% #$%&" +" <)0 7)'#3<$+)%"0 $ <$ 3(;)7$73>( %"7.%03;$ +" #%)-%$'$0 "0 %"<$6;$'"(&" %"73"(&"B ]"%"7" <$ #"($ +307.6% #%)7"+3'3"(&)0 +" &%$(04)%'$73>( +" $<-)%3&')0 %"7.%03;)0 $ 3&"%$6;)0
9$%*2..(/0 *& %:',$(#-," .,0 $&.2$"(?(*%* J0%: Z1U*!' !"# 41H&c +!"#PQ MS !"# bS !"# ?, -
Z1U*!' !"# 41H&c!# +!"# P"Q M, -
!% +b I. ", )0#1)" ?
!"# b . /3
0*40 )0#1)" 41H&c +MS bB2S MPbQ B ?, 7
!"# ? . /3
,)0 #$%5'"&%)0 +" "(&%$+$ 0" 0.:06&.1"( #)% ;$%3$:<"0 <)7$<"0 7)( "< ;$<)% E." %"73:3%M$( "( <$ <<$'$+$ 3(373$< ^/_B F< #$%5'"&%) $7.'.<$+)% ^`_ /."-$ "< #$#"< +"< %"0.<&$+) #$%73$< 3(373$<'"(&" SB
?@!*0 +b A ", ? . ? B MPbQ3 b . b B 23 7 )0#1)" ?3 7
!"(&%) +"< :.7<" 0" 7$<7.<$ "< ;$<)%C "( 7$+$ #$0)C +" <$0 ;$%3$:<"0 +" %"0.<&$+) #$%73$< ` 1 +" %"7)%%3+) /
!"#$%#&'(%" *& +$,'$%-%.(/0 ?%$+.773>( +" $<-)%3&')0 %"7.%03;)0 $ 3&"%$6;)0
9$%*2..(/0 *& %:',$(#-," $&.2$"(?," % (#&$%8?," ,)0 $<-)%3&')0 %"7.%03;)0 $.(E." "<"-$(&"0 1 "L7$7"0 D$( #%"0"(&$+) #%):<"'$0 D30&>%37)0 +" 7)'#.&$:3<3+$+ 1$ E." "< 0)#)%&" #)% #$%&" +" <)0 7)'#3<$+)%"0 $ <$ 3(;)7$73>( %"7.%03;$ +" #%)-%$'$0 "0 %"<$6;$'"(&" %"73"(&"B ]"%"7" <$ #"($ +307.6% #%)7"+3'3"(&)0 +" &%$(04)%'$73>( +" $<-)%3&')0 %"7.%03;)0 $ 3&"%$6;)0
9$%*2..(/0 *& %:',$(#-," .,0 $&.2$"(?(*%* 0, J0%: Z1U*!' !"# %&'#()!&*+ !"# " , -
Z1U*!' !"# %&'#e# +!"# ", !"# ! . "3
!% +" .. /, )0#1)" 23 0*40 )0#1)"
?@!*0 +! I /, -
" 5 %&'#()!&* + " X 2 ,3
! . ! X 2
7 7
!"# ) . 23 ?@!*0 +! A ", ) . ) 5 !3 !BB3 7 )0#1)" ) 7
a.07$% "( 3 "< L($< +" <$ 7$+"($ +" <<$'$+$0 +"07"(+"(&"B 2" $#<37$ "( 7$+$ ;."<&$ "< 0.7"0)% +" <)0 #$%5'"&%)0 ^(WX_ D$0&$ "(7)(&%$% "< "E.3;$<"(&" $< &$'$G) +"< 7$0) &%3;3$< ^S_B 2" .0$ % #$%$ $7.'.<$% "< %"0.<&$+)B 2" 3(373$<3@$ $< %"0.<&$+) +"< 7$0) :$0"B 2" .0$ <$ ;$%3$:<" 3 7)') ):/"&) +" 7)'#$%$73>( +"< 0"-.(+) :.7<"B 2" 7)'#.&$ "< %"0.<&$+) #$%73$< $#<37$(+) <$ 4.(73>( +" 7)':3($73>( ^b_ #)% "< ;$<)% +"< #$%5'"&%)B Q< L($< 0" +";."<;" "< %"0.<&$+)
!"#$%#&'(%" *& +$,'$%-%.(/0 ?%$+.773>( +" $<-)%3&')0 %"7.%03;)0 $ 3&"%$6;)0
9$%*2..(/0 *& %:',$(#-," $&.2$"(?," % (#&$%8?," ,)0 $<-)%3&')0 %"7.%03;)0 $.(E." "<"-$(&"0 1 "L7$7"0 D$( #%"0"(&$+) #%):<"'$0 D30&>%37)0 +" 7)'#.&$:3<3+$+ 1$ E." "< 0)#)%&" #)% #$%&" +" <)0 7)'#3<$+)%"0 $ <$ 3(;)7$73>( %"7.%03;$ +" #%)-%$'$0 "0 %"<$6;$'"(&" %"73"(&"B ]"%"7" <$ #"($ +307.6% #%)7"+3'3"(&)0 +" &%$(04)%'$73>( +" $<-)%3&')0 %"7.%03;)0 $ 3&"%$6;)0
9$%*2..(/0 *& %:',$(#-," -&*(%0#& &: 2", *& 20% +(:% !"# !"M0)#!) +!"# "S !"# ), -
!"# !"M0)#!)e# +!"# ", -
!% +" .. /, )0#1)" )3
!"# b . "3
)0#1)" !"M0)#!) ++" ` 2/,S ) 5 2/ B " f 2/,3
Y#&'] A!"#I Z."0? Y#&'] A!"#I+,3
7
?@!*0 +b I 2/, ZJZ14@ +b,3 " . " ` 2/3
Q#3<$')0 "< ;$<)% "( 7.%0) +" / #$%$ %"7.#"%$%<) $ <$ ;."<&$ 1 7$<7.<$')0 "< 0.7"0)0 ^(cXS_
7 !"# ] . b3
d"')0 &"%'3($+) <$ 7$+"($ +"07"(+"(&" +" <<$'$+$0B QD)%$ #%"#$%$')0 <$ 7$+"($ $07"(+"(&" +" ;."<&$B e <<";$%5 "< %"0.<&$+)C E." #$%&" +"< ;$<)% +" / 7.$(+) &"%'3($ "< :.7<" +" 3+$
?@!*0 +VZJ!4gHZ#h +,, b . ZJ#(Z+,3 ZJZ(Z+,3 ] . ] B +b f 2/,3 7 )0#1)" ]
7
=(373$<3@$73>( +" / 7)') ;$%3$:<" <)7$< E." %"#%"0"(&$ "< ;$<)% 3(373$< +"< #$%5'"&%) 1 +" # 7)') #3<$ ;$7M$ +" &%$:$/)
!"#$%#&'(%" *& +$,'$%-%.(/0 P$&5<)-) +" $<-)%3&')0
H%#7:,', *& %:',$(#-," Q.(E." "(7)(&%$% .( 7$&5<)-) +" $<-)%3&')0 7$(>(37)0 1 %"7.%%"(&"0 "0 7)'#<"/) +$+) 0. -%$( +3;"%03+$+C 03 %"<$73)($')0 "< +30"G) +" $<-)%3&')0 7)( <)0 #%3(73#$<"0 6#)0 $:0&%$7&)0 +" +$&)0 E." 0" #%"0"(&$%)( "( "< &"'$ $(&"%3)%C "0 #)03:<" "(7)(&%$% Y 7$&"-)%M$0 -"("%$<"0 "( <$ E." O0&)0 7$"( #%3(73#$<'"(&" +" $7."%+) $ 0. #%)#>03&) 4K L:',$(#-," *& $&.,$$(*, F< #%)#>03&) +" <)0 $<-)%3&')0 +" %"7)%%3+) "0 "(7)(&%$% .($ "N#%"03>( <3("$< +" <)0 "<"'"(&)0 $<'$7"($+)0 "( <$ "0&%.7&.%$ +" +$&)0B !"#"(+3"(+) +" O0&$ #."+" D$:"% ;$%3$0 "0&%$&"-3$0 +" %"7)%%3+) $<&"%($6;$0B F< %"0.<&$+) "0 .($ 7)<"773>( )%+"($+$ +" <)0 "<"'"(&)0 +" <$ "0&%.7&.%$ H%#7:,', *& %:',$(#-,"
44K L:',$(#-," *& =M"D2&*% F< #%)#>03&) +" <)0 $<-)%3&')0 +" :A0E."+$ "0 "(7)(&%$% .($ "<"'"(&) +" "(&%" &)+)0 <)0 "<"'"(&)0 $<'$7"($+)0 "( <$ "0&%.7&.%$ +" +$&)0B !"#"(+3"(+) +" O0&$ "N30&"( +306(&$0 "0&%$&"-3$0 7)( 7)'#<"/3+$+ ;37";"%0$B F< %"0.<&$+) "0 .( ;$<)% +" ;"%+$+ 3(+37$+) 03 0" "(7."(&%$ "< "<"'"(&) ) .( M(+37" +" #)0373>( 444K L:',$(#-," *& ,$*&0%.(/0 F< #%)#>03&) +" <)0 $<-)%3&')0 +" )%+"($73>( "0 %")%-$(3@$% <)0 "<"'"(&)0 +" <$ "0&%.7&.%$ +" +$&)0 #$%$ +30#)("%<)0 +" $7."%+) $ 73"%&) 7%3&"%3) +" )%+"(B f$%$ #)+"% $%67.<$% .($ )%+"($73>( 0):%" .($ "0&%.7&.%$ +" +$&)0 <)0 "<"'"(&)0 +":"( 0"% 7)'#$%$:<"0 1 <$ "0&%.7&.%$ #%"0&$%0" $< 7%3&"%3) +" )%+"(
!"#$%#&'(%" *& +$,'$%-%.(/0 P$&5<)-) +" $<-)%3&')0
H%#7:,', *& %:',$(#-," ,$ ($&.%$<"@$ 3&"%$6;$ ) %"7.%03;$ +" <)0 $<-)%3&')0 E."+" 4%"7."(&"'"(&" 3(+.73+$ #)% <$ 4)%'$ "( E." "< #"%L< +" <$0 )#"%$73)("0 +$ $77"0) $ <)0 +$&)0B Q <) <$%-) +" "0&" 7.%0) %"#$0$%"')0 <)0 #%3(73#$<"0 6#)0 +" $<-)%3&')0 J %"7)%%3+)C :A0E."+$ 1 )%+"($73>( J $#<37$:<"0 0):%" 7$+$ .() +" <)0 6#)0 $:0&%$7&)0 +" +$&)0 E." "0&.+3$%"')0 Recorrido
Búsqueda
Ordenación
Listas*
g"7)%%3+) +3%"7&) g"7)%%3+) 3(;"%0)
aA0E."+$ 0"7."(73$<
=(0"%73>( ]"%-" 0)%&
Pilas
g"7)%%3+) +"0+" <$ 73'$
aA0E."+$ 0"7."(73$<
W
Colas
g"7)%%3+) D$73$ "< L($<
aA0E."+$ 0"7."(73$<
W
Arboles
f%")%+"(C 3()%+"(C #)0&)%+"( g"7)%%3+) "( $(7D.%$
aA0E."+$ :3($%3$
9%+"($73>(
b 2" %"L"%" $ <30&$0C <30&$0 +):<"'"(&" "(<$@$+$0 1 <30&$0 73%7.<$%"0
!"#$%#&'(%" *& +$,'$%-%.(/0 a3:<3)-%$h$
N(=:(,'$%O% Bibliografía básica
Estructuras de datos en java. Weiss, Mark Allen. Pearson Addison – Wesley. ISBN 9788478290352
!"#$%#&'(%" *& +$,'$%-%.(/0 a3:<3)-%$h$
N(=:(,'$%O% Bibliografía complementaria
Programación metódica. BALCÁZAR, J. L. McGraw-Hill, 1993. ISBN 8448119576
Diseño de programas. Formalismo y abstracción. Ricardo Peña Marí. Pearson Prentice Hall. ISBN 13: 9788420541914