You are on page 1of 5

15.

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:

POLITCNICO GRANCOLOMBIANO EN ALIANZA CON WHITNEY INTERNATIONAL UNIVERSITY SYSTEM

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

You might also like