Professional Documents
Culture Documents
Recursin
Larecursinsebasaenladefinicindelasolucindeproblemasconbaseenllamadasa
unmismomtodo,desdesmismo.Paraellosedebentenerencuentacondicionesque
permitanterminarlaejecucindeunmtodoypautasparaeldiseodealgoritmos
recursivos.
15.1 Solucinrecursivadeproblemas
Pensemosenlasiguientedefinicin:Elfactorialdeunnmeroesresultadodemultiplicar
dichonmeroporelfactorialdesuantecesor,siempreycuandoesevalornoseacero,en
cuyocaso,elresultadoser1.Asimplevista,esunadefinicinnormalquehabladela
definicindelfactorialdeunnmeroentero.Sinembargo,hayalgointeresanteyaqueen
ladefinicinsehabladelaevaluacindelamismafuncinenunvaloranterior.Por
ejemplo,siqueremoscalcularelfactorialde5,deacuerdoaladefinicintendramosque:
5!=5x4!Pero4!,deacuerdoaladefinicin,sera4x3!,entonces:
5!=5x4x3!Pero3!,sera3x2!,entonces:
5!=5x4x3x2!Pero2!,sera2x1!,entonces:
5!=5x4x3x2x1!Pero1!,sera1x0!,entonces:
5!=5x4x3x2x1x0!Pero0!,deacuerdoaladefinicines1,entonces:
5!=5x4x3x2x1x1
Entonces,sehadescompuestorecursivamentelaevaluacindelfactorialde5conbaseen
elreemplazode"!"porsudefinicin.Adems,lacondicinquenoshabladelfactorialde
cero,permitequepodamosdejardehacerlosreemplazosporversionesdelamisma
funcin.
15.2 Definicineimplementacindefuncionesrecursivas
Comovimosenladefinicindelafuncinfactorial,requerimosdedoselementospara
contarconunadefinicincorrecta.Estoselementosson:
AdrianNicolsMalaverBarrera
Relacinderecurrencia:estarelacineslaquedefinequelasolucindelasituacin
particularsebasaenllamadasalamismafuncin.Deacuerdoconestadefinicinse
esperaqueenestarelacinderecurrenciaseimpliqueelusodirectodelafuncin.
Casobase:eselcasomsbsico,querepresentalainformacinconocidadel
problemaenunpuntoespecfico.Paraelcasodelafuncinfactorial,elcasobasees
queelfactorialdeceroes1.Paralafuncinfactorial,podramosdefinirlosiguiente:
Relacinderecurrencia:
factorial(n)=n*factorial(n1),paran>0
Casobase:
factorial(0)=1
Laimplementacindefuncionesrecursivas,sebasaenlosiguiente:
Sisedaelcasobase,seretornalasalidaesperada
Enotrocaso,seaplicalarelacinderecurrencia
Paraefectosprcticos,lasfuncionesrecursivassernimplementadascomomtodos.De
acuerdoconesto,laimplementacindelafuncinfactorialseralasiguiente:
MtodoFactorial
Entradas
Inicio
si n = 0 entonces
n: Entero
Pre:{n >= 0}
retorne 1;
si_no
retorne n*Factorial(n 1)
fin_si
Fin
Salidas
n!
Pos:{n! es el factorial de n}
VeamosqupasaraalhacerFactorial(5):
Factorial(5):Como5esdistintodecero,seretorna5*Factorial(4).EntoncesFactorial(5)
seraiguala5*Factorial(4).
AdrianNicolsMalaverBarrera
Factorial(4):Como4esdistintodecero,seretorna4*Factorial(3).EntoncesFactorial(4)
seraiguala4*Factorial(3).
Factorial(3):Como3esdistintodecero,seretorna3*Factorial(2).EntoncesFactorial(3)
seraiguala3*Factorial(2).
Factorial(2):Como2esdistintodecero,seretorna2*Factorial(1).EntoncesFactorial(2)
seraiguala2*Factorial(1).
Factorial(1):Como1esdistintodecero,seretorna1*Factorial(0).EntoncesFactorial(1)
seraiguala1*Factorial(0).
Factorial(0):Como0esigualacero,seretorna1.EntoncesFactorial(0)seraiguala1.
Enestepuntoyasepuedenresolverlasrecurrenciasanterioresconbaseenelvalor
constante1quesehahallado.Entonces:
Factorial(1)=1*1
Factorial(2)=2*1*1
Factorial(3)=3*2*1*1
Factorial(4)=4*3*2*1*1
YfinalmenteFactorial(5)=5*4*3*2*1*1=120.
Alusarsolucionesrecursivashayquetenerencuentapuntosimportantes:
Laejecucindefuncionesrecursivasdefinerequerimientosdememoriamsaltos,
dadoque,aldependerdellamadasfuturasalamismafuncin,lamemoriarequerida
paraalmacenarelestadodelasvariablesylasinstruccionesimplicadassemultiplicar.
Muchasveceslasolucinrecursivadeunalgoritmopuedeseroparecermssimple
queotrotipodesolucin,peroesmscostosaporlascondicionesqueacabamosde
ver.
Esnecesariotenergranclaridadenladefinicindelcasobasedelasolucinrecursiva
deunproblema,dadoque,siestonosehacebien,puedenpresentarseproblemasde
iteracininfinitasimilaresalosquesepuedenpresentarenlosciclos.
15.3 Recursininfinita
AdrianNicolsMalaverBarrera
Lacorrectadefinicindeloselementosdeunalgoritmorecursivoesdevitalimportancia
paralograrlosresultadosesperados.Unasituacincomn,quesepresentaduranteel
procesodeaprendizaje,eslarecursininfinita.Estasituacinsebasaenque,acausade
ladefinicinincorrectadelalgoritmorecursivo,nuncasepuedahallarunasolucin.Por
ejemplo,sienelcasodelalgoritmoFactorial,accidentalmenteolvidamosreducirel
valordenenlarelacinderecurrencia,nuncasepresentaraelcasobase,causandoque
sehagaunaserieinfinitadellamadasalmismomtodo:yesoue
MtodoFactorial
Entradas
Inicio
si n = 0 entonces
n: Entero
Pre:{n >= 0}
retorne 1;
si_no
retorne n*Factorial(n)
fin_si
Fin
Salidas
n!
Pos:{n! es el factorial de n}
Porejemplo,alcalcular4!:
Factorial(4)
Factorial(4)
Factorial(4)
Factorial(4)
.
.
.
=
=
=
=
4
4
4
4
*
*
*
*
Factorial(4)
Factorial(4)
Factorial(4)
Factorial(4)
Siunalgoritmoconestascaractersticasescodificadoenunlenguajedeprogramacin,
puedesucederunerrordevolcadodepila,quesebasaenquenohayrecursossuficientes
paraalmacenartodoslosposiblesestadosdelmtodo.
Ladefinicinincorrectadelarelacinderecurrencianoeslanicaraznporlaquese
puedenpresentarsituacionesderecursininfinita.Porejemplo,Qupasarasinose
verificalacondicindelcasobase,oseusauncasobaseincorrectoquenuncapueda
darse?
Enresumen
Lasfuncionesrecursivaspermitensolucionarproblemasdefinidoscomolasolucinde
problemasmspequeosdelmismotipo,quesonimplementadosconbaseenllamadas
AdrianNicolsMalaverBarrera
recursivasamtodos.Paradefinirlasolucinrecursivaaunproblemaesnecesario
contarconuncasobase,queeselnicocasocuyasolucinestrivialynorecursiva,y
contarademsconladefinicindeunarelacinderecurrencia,quepermiteidentificar
culseralasolucindelproblemainvolucrandosupropiadefinicin.
Paratenerencuenta:
Enlamayoradecasos,lasolucinrecursivadeunproblemaeslamssimpleen
apariencia;sinembargo,noesmuyeficiente,dadoquerequiereelalmacenamiento
enmemoriadelestadodecadallamadarecursivaalafuncin.
Esmuyimportantedefinircorrectamenteelcasobaseylasprecondicionesdeun
algoritmorecursivo,dadoqueunamaladefinicinpuedecausarproblemasde
recursininfinita.
Larecursinpresentalaposibilidaddesimplificarlasolucindeproblemas,
aprovechandolacapacidadparaalmacenar,deformaautomtica,estadosespecficos
delaejecucindeunalgoritmo.Sinembargo,dadoqueestosepuedehaceratravs
delusodeestructurasqueguardenlainformacindeseada,esposibledesarrollar
cualquieralgoritmorecursivodeformaiterativayviceversa.
AdrianNicolsMalaverBarrera