Está en la página 1de 18

9/4/2015 ImprimirPginaEjerciciosRecursivosenJavaysusSoluciones

Forodeelhacker.net
Programacin=>Ejercicios=>Mensajeiniciadopor:@ohken11Octubre2008,03:19

Ttulo:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:@ohken11Octubre2008,03:19

PlanteamientodelEjercicioacompaadodelalgoritmoderesolucinenJava
Planteamiento:

Ejercicio1.Programarunalgoritmorecursivoquecalculeelfactorialdeunnmero.

Solucin:

Cdigo

1. intfactorial(intn){
2. if(n==0)return1;//AXIOMA
3. elsereturnn*factorial(n1);//FORMULARECURSIVA
4. }

Planteamiento:

Ejercicio2.Programarunalgoritmorecursivoquecalculeunnmerodelaseriefibonacci.

Solucin:

Cdigo

1. intfibonaci(intn){
2. if(n==1||n==2)return1;
3. elsereturnfibonaci(n1)+fibonaci(n2);
4. }

Planteamiento:

Ejercicio3.Programarunalgoritmorecursivoquepermitahacerladivisinporrestassucesivas.

Solucin:

Cdigo

1. intdivision(inta,intb)
2. {
3. if(b>a)return0;
4. else
5. returndivision(ab,b)+1;
6. }
7.

Planteamiento:

Ejercicio4.Programarunalgoritmorecursivoquepermitainvertirunnmero.Ejemplo:Entrada:123Salida:321

Solucin:

Cdigo

1. intinvertir(intn)
2. {
3. if(n<10)//casobase
4. returnn;
5. else
6. return(n%10)+invertir(n/10)*10;
7. }

Planteamiento:

Ejercicio5.Programarunalgoritmorecursivoquepermitasumarlosdgitosdeunnmero.Ejemplo:Entrada:123Resultado:6

Solucin:

Cdigo

1. intsumar_dig(intn)
2. {
3. if(n==0)//casobase

http://foro.elhacker.net/printpage.htmltopic=231013.0 1/18
9/4/2015 ImprimirPginaEjerciciosRecursivosenJavaysusSoluciones
4. returnn;
5. else
6. returnsumar_dig(n/10)+(n%10);
7. }

Planteamiento:

Ejercicio6.Programarunalgoritmorecursivoquepermitahacerunamultiplicacin,utilizandoelmtodoRuso.Paramasinformacion:aqui
(http://es.wikipedia.org/wiki/Multiplicacin_por_duplicacin).

Solucin:

Cdigo

1. intmult_rusa(intA,intB)
2. {
3. if(A==1){
4. return(B);
5. }
6. if(A%2!=0){
7. return(B+mult_rusa(A/2,B*2));
8. }
9. else{
10. return(mult_rusa(A/2,B*2));
11. }
12. }

Planteamiento:

Ejercicio7.Programarunalgoritmorecursivoquepermitasumarloselementosdeunvector.

Solucin:

Cdigo

1. intsuma_vec(intv[],intn)
2. {
3. if(n==0)
4. returnv[n];
5. else
6. returnsuma_vec(v,n1)+v[n];
7. }

Planteamiento:

Ejercicio8.Programarunalgoritmorecursivoquepermitamultiplicarloselementosdeunvector.

Solucin:

Cdigo

1. intmultiplicar(intvec[],inttam)
2. {
3. if(tam==0)
4. return(vec[0]);
5. return(vec[tam]*multiplicar(vec,tam1));
6. }

Planteamiento:

Ejercicio9.ProgramarunalgoritmorecursivoquecalculeelMaximocomundivisordedosnmeros.

Solucin:

Cdigo

1. intsacar_mcd(inta,intb){
2. if(b==0)
3. returna;
4. else
5. returnsacar_mcd(b,a%b);
6. }
7.

Planteamiento:

Ejercicio10.Programarunalgoritmorecursivoquedeterminesiunnmeroespositivo.

Solucin:

http://foro.elhacker.net/printpage.htmltopic=231013.0 2/18
9/4/2015 ImprimirPginaEjerciciosRecursivosenJavaysusSoluciones

Cdigo

1. publicbooleanpositivo(intn){
2. if(n>0)returntrue;
3. elsereturnnegativo(n);
4. }
5.
6. publicbooleannegativo(intn){
7. if(n<0)returnfalse;
8. elsereturnpositivo(n);
9. }

Planteamiento:

Ejercicio11.Programarunalgoritmorecursivoquedeterminesiunnmeroesimparutilizandorecursividadcruzada.

Solucin:

Cdigo

1. publicbooleanpar(intn){
2. if(n==0)returntrue;
3. elsereturnimpar(n1);
4. }
5.
6. publicbooleanimpar(intn){
7. if(n==0)returnfalse;
8. elsereturnpar(n1);
9. }

Planteamiento:

Ejercicio12.Programarunalgoritmorecursivoquepermitasumarloselementosdeunamatriz.

Solucin:

Cdigo

1. intsuma(intfila,intcol,intorden,intmat[][])
2. {
3. if(fila==0&&col==0)
4. returnmat[0][0];
5. else
6. if(col<0)
7. returnsuma(fila1,orden,orden,mat);
8. else
9. returnmat[fila][col]+suma(fila,col1,orden,mat);
10. }

Planteamiento:

Ejercicio13.Programarunalgoritmorecursivoquepermitaresolverelcuadrolatino.Ejemplodecuadrolatino:

00001
00012
00123
01234
12345

Solucin:

Cdigo

1. latino(intfila,intcol,intcont,intorden,intmat[][])
2. {
3. if(fila==0&&col==0)
4. mat[0][0]=1;
5. else
6. if(fila==col)
7. latino(fila1,orden1,orden,orden,mat);
8. else
9. {
10. mat[fila][col]=cont;
11. latino(fila,col1,orden+1,orden,mat);
12. }
13. }

Planteamiento:

Ejercicio14.Programarunalgoritmorecursivoquepermitaresolverlasiguientematriz:

http://foro.elhacker.net/printpage.htmltopic=231013.0 3/18
9/4/2015 ImprimirPginaEjerciciosRecursivosenJavaysusSoluciones

11111
12222
12444
12488
124816

Solucin:Solucionadopor:AmeRiK@nO

Cdigo

1. publicclassMatrizRecursividad{
2.
3. privatestaticinta=0,aux=1,b=0;//Declaramoslosdatosnecesarios
4. privatestaticint[][]matriz=newint[6][6];//Lamatrizdebesercuadrada
5.
6. publicstaticvoidmain(String[]args){
7.
8. llenarMatriz(matriz,a,b);//Iniciamoselllamadorecursivo
9. imprimir();//imprimimoslamatriz
10.
11. }
12.
13. publicstaticvoidllenarMatriz(intmatriz[][],inti,intj){
14.
15. if(j>matriz.length1){//Sillegalaultimacoluna,reseteamoslosdatosparalasiguiente
16. i++;
17. j=0;
18. aux++;
19. }
20. if(i<matriz.length){//comparaquenohallamosllegadoalfinal
21.
22. if(i==(aux1)&&j>=(aux1)){//compruebaqueestemosenellugaradecuado,esdeciriraimprimientoescaladamente
23. if(i==0)//sieslaprimerafilaingresamosaux=1
24. matriz[i][j]=matriz[i][j]=aux;
25. else
26. matriz[i][j]=matriz[i][i1]*2;//ingresamoselvalorcorrespondientealultimodela"escala"*2
27. llenarMatriz(matriz,i,j+1);
28. }
29. else{//sino,asignamoslosvaloresanterioresdelaescala
30. if(j==0)//comprobamossieselprimerdigitoaingresar
31. matriz[i][j]=j+1;
32. else
33. matriz[i][j]=matriz[i1][j];//asignamoselmismonumerodelafilaanterior(i1)
34. llenarMatriz(matriz,i,j+1);
35. }
36. }
37. }
38.
39. publicstaticvoidimprimir(){//estemetodonosimprimelamatrizporconsola
40.
41. for(inti=0;i<matriz.length;i++){
42. for(intj=0;j<matriz.length;j++){
43. System.out.print(matriz[i][j]+"");
44. }
45. System.out.print("\n");
46. }
47. }
48.
49. }

Planteamiento:

Ejercicio15.Programarunalgoritmorecursivoqueejecutelamatrizdelcubomgico.

Solucin:

Cdigo

1. voidmagico(intmat[][],intfil,intcolmedio,intc,intn)
2. {
3. if(c==n*n)
4. {
5. mat[n1][colmedio]=c;
6. }
7. else
8. {
9. if(fil<0&&colmedio==n)
10. {
11. magico(mat,fil+2,n1,c,n);
12. }
13. else
14. {
15. if(fil<0)
16. {
17. magico(mat,n1,colmedio,c,n);
18. }
19. else
20. {
21. if(colmedio==n)
22. {
23. magico(mat,fil,0,c,n);
24. }

http://foro.elhacker.net/printpage.htmltopic=231013.0 4/18
9/4/2015 ImprimirPginaEjerciciosRecursivosenJavaysusSoluciones
25. else
26. {
27. if(mat[fil][colmedio]==0)
28. {
29. mat[fil][colmedio]=c;
30. magico(mat,fil1,colmedio+1,c+1,n);
31. }
32. else
33. {
34. magico(mat,fil+2,colmedio1,c,n);
35. }
36. }
37. }
38. }
39.
40. }
41. }

Planteamiento:

Ejercicio16.Programarunalgoritmorecursivoquemuestreelnumeromenordeunvector.

Solucin:

Cdigo

1. intmenorvec(intx[],intn,intmenor){
2. if(n==0)
3. if(menor>x[n])returnx[0];
4. elsereturnmenor;
5. else
6. if(menor>x[n])returnmenorvec(x,n1,x[n]);
7. elsereturnmenorvec(x,n1,menor);}

Planteamiento:

Ejercicio17.Programarunalgoritmorecursivoquemuestreelnumeromayordeunvector.

Solucin:

Cdigo

1. intmayor(intnumeros[],intposicion){
2. intaux;
3. if(posicion==0)returnnumeros[posicion];
4. else{
5. aux=mayor(numeros,posicion1);
6. if(numeros[posicion]>aux)returnnumeros[posicion];
7. elsereturnmayor(numeros,posicion1);
8. }
9. }

Citar

Recursividad
1.1.Introduccin.

Elconceptoderecursividadvaligadoalderepeticin.Sonrecursivosaquellosalgoritmosque,estandoencapsuladosdentrodeunafuncin,sonllamadosdesdeellamismaunayotravez,
encontraposicinalosalgoritmositerativos,quehacenusodebucleswhile,dowhile,for,etc.

1.2.Definicin.

Algoesrecursivosisedefineentrminosdesmismo(cuandoparadefinirsehacemencinasmismo).Paraqueunadefinicinrecursivaseavlida,lareferenciaasmismadebeser
relativamentemssencillaqueelcasoconsiderado.
1.3.ElementosdelaRecursin

1.3.1.Axioma

Esuncasodondeelproblemapuederesolversesintenerquehacerusodeunanuevallamadaasmismo.Evitalacontinuacinindefinidadelaspartesrecursivas.

1.3.2.Formularecursiva

Relacionaelresultadodelalgoritmoconresultadosdecasosmssimples.Sehacennuevasllamadasalafuncin,peroestnmsprximasalcasobase.
Porejemplo:Elfactorialdeunnmero

factorial(0)>1
factorial(1)>1*factorial(0)
factorial(2)>2*factorial(1)
factorial(3)>3*factorial(2)
>
factorial(N)>3*factorial(N1)

Enlaresolucindealgoritmosrecursivosesimprescindibleencontrarestosdoselementos.

1.4.Tiposderecursin

1.4.1.Recursividadsimple

Aquellaencuyadefinicinsloapareceunallamadarecursiva.Sepuedetransformarconfacilidadenalgoritmositerativos.

1.4.2.Recursividadmltiple
Sedacuandohaymsdeunallamadaasmismadentrodelcuerpodelafuncin,resultandomsdifcildehacerdeformaiterativa.Unejemplotpicoeslafuncindefibonacci

http://foro.elhacker.net/printpage.htmltopic=231013.0 5/18
9/4/2015 ImprimirPginaEjerciciosRecursivosenJavaysusSoluciones

1.4.3.Recursividadanidada
Enalgunosdelosargumentosdelallamadarecursivahayunanuevallamadaasmisma.LafuncindeAckermannsedefineporrecursividadcomosigue:

1.4.4.Recursividadcruzadaoindirecta
Sonalgoritmosdondeunafuncinprovocaunallamadaasmismadeformaindirecta,atravsdeotrasfunciones.

OHK

Ttulo:Re:EjerciciosRevursivosenJavaysusSoluciones
Publicadopor:@ohken11Octubre2008,03:47

Alguienseanimaaresolverelejercicio14?

OHK

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:Amerikano|Clsen13Noviembre2008,02:17

lointentarehacerperonecesitotiempo,porqueandoocupado.

amerikano

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:Amerikano|Clsen27Noviembre2008,22:30

Oyeunarecomendacin,eldefibonnacinoesconvenientehacerloporrecursividad,porlosiguiente,yesquelasllamadasrecursivasse
dividenendoslocualconllevaarepetirunmismoprocesomasdedosvecesyesolerestavelocidadyeficiencia:xDerasoloesojeje.

salu2

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:Amerikano|Clsen4Diciembre2008,18:38

Citade:ohken11Octubre2008,03:19

Planteamiento:

Ejercicio14.Programarunalgoritmorecursivoquepermitaresolverlasiguientematriz:

11111
12222
12444
12488
124816

Solucin:

Cdigo

1. Nosolucionado...

Buenoyoyasolucioneelnumero14jejeestabafacilitosoloquenoteniatiempodehacerlo,acava:

Cdigo

1. publicclassMatrizRecursividad{
2.
3. privatestaticinta=0,aux=1,b=0;//Declaramoslosdatosnecesarios
4. privatestaticint[][]matriz=newint[6][6];//Lamatrizdebesercuadrada
5.
6. publicstaticvoidmain(String[]args){
7.
8. llenarMatriz(matriz,a,b);//Iniciamoselllamadorecursivo
9. imprimir();//imprimimoslamatriz
10.
11. }
12.
13. publicstaticvoidllenarMatriz(intmatriz[][],inti,intj){
14.
15. if(j>matriz.length1){//Sillegalaultimacoluna,reseteamoslosdatosparalasiguiente
16. i++;
17. j=0;
18. aux++;
19. }
20. if(i<matriz.length){//comparaquenohallamosllegadoalfinal
21.
22. if(i==(aux1)&&j>=(aux1)){//compruebaqueestemosenellugaradecuado,esdeciriraimprimientoescaladamente
23. if(i==0)//sieslaprimerafilaingresamosaux=1
24. matriz[i][j]=matriz[i][j]=aux;
25. else
26. matriz[i][j]=matriz[i][i1]*2;//ingresamoselvalorcorrespondientealultimodela"escala"*2
27. llenarMatriz(matriz,i,j+1);
28. }
29. else{//sino,asignamoslosvaloresanterioresdelaescala
30. if(j==0)//comprobamossieselprimerdigitoaingresar
31. matriz[i][j]=j+1;
32. else
33. matriz[i][j]=matriz[i1][j];//asignamoselmismonumerodelafilaanterior(i1)
34. llenarMatriz(matriz,i,j+1);
35. }

http://foro.elhacker.net/printpage.htmltopic=231013.0 6/18
9/4/2015 ImprimirPginaEjerciciosRecursivosenJavaysusSoluciones
36. }
37. }
38.
39. publicstaticvoidimprimir(){//estemetodonosimprimelamatrizporconsola
40.
41. for(inti=0;i<matriz.length;i++){
42. for(intj=0;j<matriz.length;j++){
43. System.out.print(matriz[i][j]+"");
44. }
45. System.out.print("\n");
46. }
47. }
48.
49. }
50.

Buenocualquierdudacomentenquepaesoestoy:xD.

salu2

amerikano

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:@ohken4Diciembre2008,20:19

@AmeRiK@nO,tuejerciciocorreperfectamente,yelcodigonoesdificildeinterpretar,porquehacescodigolimpio.

Ahoramismoloagregotuejercicioaelespacioquefalta.
Graciasporelaporte
Unsaludo

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:Amerikano|Clsen5Diciembre2008,01:49

jejedebescorregiresto:

Cdigo

1. if(i==0)//sieslaprimerafilaingresamosaux=1
2. matriz[i][j]=matriz[i][j]=aux;

Vez,lopusedosvecessinquerer,ahoraponsolouno:

Cdigo

1. if(i==0)//sieslaprimerafilaingresamosaux=1
2. matriz[i][j]=aux;

SemecolunosindarmecuentaD,peroasytodofuncion:),soloeraeso.

salu2

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:@ohken5Diciembre2008,03:18

Citade:AmeRiK@nOen5Diciembre2008,01:49
jejedebescorregiresto:

Cdigo

1. if(i==0)//sieslaprimerafilaingresamosaux=1
2. matriz[i][j]=matriz[i][j]=aux;

Vez,lopusedosvecessinquerer,ahoraponsolouno:

Cdigo

1. if(i==0)//sieslaprimerafilaingresamosaux=1
2. matriz[i][j]=aux;

SemecolunosindarmecuentaD,peroasytodofuncion:),soloeraeso.

salu2

:xD

Daigual,ademasquienlousesedaracuenta:rolleyes:

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:juancho77en7Diciembre2008,01:35

Detodosmodosnotieneerror,nisintacticonisemantico.:P

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:pixzetoen11Junio2009,02:03

http://foro.elhacker.net/printpage.htmltopic=231013.0 7/18
9/4/2015 ImprimirPginaEjerciciosRecursivosenJavaysusSoluciones
Estuvepracticandoconestosejerciciosyparecequeelmtodoparainvertirunnmeronofuncionabien.

Porejemplo,sileentregamosel32,dara:
2+invertir(3)*10=2+3*10=32

Cdigo:
intinvertir(intn)
{
if(n<10)//casobase
returnn;
else
return(n%10)+invertir(n/10)*10;
}

Perolohiceasyfunciona:
Cdigo:
publicintinvertirNumero(intnumero){
if(numero<10){
returnnumero;
}else{
intcontador=0;
intaux=numero;
while(aux/10!=0){
contador++;
aux=aux/10;
}
return(int)(Math.pow(10,contador))*(numero%10)+this.invertirNumero(numero/10);
}
}

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:Amerikano|Clsen11Junio2009,02:18

Aquiagregounosmios:

DeterminarsiunapalabraesPalndroma:

Cdigo

1. publicbooleanpalindroma(Stringpalabra,inti,intj){
2.
3. if(i!=(palabra.length()/2)){
4. if(palabra.charAt(i)==palabra.charAt(j))
5. returnpalindroma(palabra,++i,j);
6. else
7. returnfalse;
8. }
9. returntrue;
10. }

Sumarelbordedeunamatrizdeenteros:

Cdigo

1. publicintsumaBorde(inti,intj){
2.
3. if(i>matriz.length1)
4. return0;
5. else{
6. if(j>matriz.length1){
7. j=0;
8. i++;
9. returnsumaBorde(i,j);
10. }else{
11. if((i==0)||(i==matriz.length1)||(j==0)||(j==matriz.length1))
12. returnmatriz[i][j]+sumaBorde(i,j+1);
13. }
14. }
15. returnsumaBorde(i,j+1);
16. }

Salu2

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:djrochaen7Julio2009,19:48

Buenastardes:

Megustaraconocerelcdigodeestosejerciciosimplementndoloenambientegrfico.Gracias.

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:VonNen7Julio2009,20:08

Eslomismo.
Sonalgoritmos,asquepuedesimplementarloscomofuncin,yluegopasarlelosparmetroscorrespondientesdesdetusobjetos.

Unsaludo

http://foro.elhacker.net/printpage.htmltopic=231013.0 8/18
9/4/2015 ImprimirPginaEjerciciosRecursivosenJavaysusSoluciones
Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:saintmauricioxden20Abril2010,18:44

Citade:pixzetoen11Junio2009,02:03
Estuvepracticandoconestosejerciciosyparecequeelmtodoparainvertirunnmeronofuncionabien.

Porejemplo,sileentregamosel32,dara:
2+invertir(3)*10=2+3*10=32

Cdigo:
intinvertir(intn)
{
if(n<10)//casobase
returnn;
else
return(n%10)+invertir(n/10)*10;
}

Perolohiceasyfunciona:
Cdigo:
publicintinvertirNumero(intnumero){
if(numero<10){
returnnumero;
}else{
intcontador=0;
intaux=numero;
while(aux/10!=0){
contador++;
aux=aux/10;
}
return(int)(Math.pow(10,contador))*(numero%10)+this.invertirNumero(numero/10);
}
}

Tualgoritmonoesrecursivo,recordemosquelarecursividadesunaalternativaalaiteracion(losbuclesfor,whilenodebenusarseal
implementarrecursividad)perovaleelintento)

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:cibercitoen18Junio2010,06:27

Citade:saintmauricioxden20Abril2010,18:44
Citade:pixzetoen11Junio2009,02:03
Estuvepracticandoconestosejerciciosyparecequeelmtodoparainvertirunnmeronofuncionabien.

Porejemplo,sileentregamosel32,dara:
2+invertir(3)*10=2+3*10=32

Cdigo:
intinvertir(intn)
{
if(n<10)//casobase
returnn;
else
return(n%10)+invertir(n/10)*10;
}

Perolohiceasyfunciona:
Cdigo:
publicintinvertirNumero(intnumero){
if(numero<10){
returnnumero;
}else{
intcontador=0;
intaux=numero;
while(aux/10!=0){
contador++;
aux=aux/10;
}
return(int)(Math.pow(10,contador))*(numero%10)+this.invertirNumero(numero/10);
}
}
Tualgoritmonoesrecursivo,recordemosquelarecursividadesunaalternativaalaiteracion(losbuclesfor,whilenodebenusarsealimplementarrecursividad)perovaleelintento)

Megustariaunaaclaracionsobrerecursividad,yaquesinelladiscrepocontigo,porqueconsideroqueesealgoritmosiesrecursivopor
aplicarseeltambienciertoconceptode:"Larecursividadsimplementesignificaaplicarunafuncincomopartedeladefinicindeesamisma
funcin.".(yoloentiendocomo,siunafuncionsellamadentrodesumismafuncion=recursividad)
Entoncesquisierasaber:siunafunciontienenbuclesPEROSEHACERECURSIVIDAD(oseaelconceptoqueyomanejo),elalgoritmoes
recursivoodejadeserloportenernbucles?.

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:LeoGutirrez.en18Junio2010,21:09

Citade:saintmauricioxden20Abril2010,18:44
Citade:pixzetoen11Junio2009,02:03
Estuvepracticandoconestosejerciciosyparecequeelmtodoparainvertirunnmeronofuncionabien.

Porejemplo,sileentregamosel32,dara:
2+invertir(3)*10=2+3*10=32

Cdigo:
intinvertir(intn)
{
if(n<10)//casobase
returnn;
else
return(n%10)+invertir(n/10)*10;
}

Perolohiceasyfunciona:
Cdigo:

http://foro.elhacker.net/printpage.htmltopic=231013.0 9/18
9/4/2015 ImprimirPginaEjerciciosRecursivosenJavaysusSoluciones
publicintinvertirNumero(intnumero){
if(numero<10){
returnnumero;
}else{
intcontador=0;
intaux=numero;
while(aux/10!=0){
contador++;
aux=aux/10;
}
return(int)(Math.pow(10,contador))*(numero%10)+this.invertirNumero(numero/10);
}
}
Tualgoritmonoesrecursivo,recordemosquelarecursividadesunaalternativaalaiteracion(losbuclesfor,whilenodebenusarsealimplementarrecursividad)perovaleelintento)

Mal,muymal,losciclosnotienennadaqueverconlarecursividad,repasatusapuntes.

Ycomoprueba,observaalgunosalgoritmosrecursivos,comolaordenacinquicksort.

http://es.wikipedia.org/wiki/Quicksort

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:shiguredarken26Agosto2010,06:50

estoyrealizandounejerciciodondeyarealiseunprogramaenelcualingresounnumeropositivoyestemegeneralatablademultiplicar
hastael10

elasuntoesquenotengonilamasminimaideadecomohacerqueestesevulvarecursivoyaqueentodaslasvecesquesecomentoen
ningunaelprogramaestaechocomomiprofesorameloenseo.

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:espabeen6Octubre2010,06:44

Holaamigos!estoyllevandouncursodeinformaticaperoyosoyunprincipianteenlamateria.Quisierasabercomoustedesharanun
programaconlassiguientesnormas:

Implemente,tantodeformarecursivacomodeformaiterativa,unmtodoquenosdevuelvaelmximocomndivisordedosnmeros
enterosutilizandoelalgoritmodeEuclides.
ALGORITMODEEUCLIDES
Dadosdosnmerosenterospositivosmyn,talquem>n,paraencontrarsumximocomndivisor(esdecir,elmayorenteropositivoque
divideaambos):
a)Dividirmpornparaobtenerelrestor(0<=r<n)
b)Sir=0,elMCDesn.
c)Sino,elmximocomndivisoresMCD(n,r).

Esperoquemepuedanayudar,Gracias!!

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:Aerosen16Octubre2010,21:27

xDDDDDDDmuestranosloquetienesyteayudaremops:D:D

PD:tarea??

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:[L]ord[R]NAen16Octubre2010,22:43

Aquinosehacentareas...dejendepedireso.

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:pavelinhosen26Noviembre2010,21:35

Citade:pixzetoen11Junio2009,02:03
Estuvepracticandoconestosejerciciosyparecequeelmtodoparainvertirunnmeronofuncionabien.

Porejemplo,sileentregamosel32,dara:
2+invertir(3)*10=2+3*10=32

Cdigo:
intinvertir(intn)
{
if(n<10)//casobase
returnn;
else
return(n%10)+invertir(n/10)*10;
}

Perolohiceasyfunciona:
Cdigo:
publicintinvertirNumero(intnumero){
if(numero<10){
returnnumero;
}else{
intcontador=0;
intaux=numero;
while(aux/10!=0){
contador++;
aux=aux/10;

http://foro.elhacker.net/printpage.htmltopic=231013.0 10/18
9/4/2015 ImprimirPginaEjerciciosRecursivosenJavaysusSoluciones
}
return(int)(Math.pow(10,contador))*(numero%10)+this.invertirNumero(numero/10);
}
}

Aquiunaportemio:
Cdigo:
publicStringInvertir(intnum){
if(num<10)
returnString.valueOf(num);
else
returnString.valueOf(num%10)+Invertir(num/10);
}

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:criptofanen4Diciembre2010,20:11

Citade:pavelinhosen26Noviembre2010,21:35
Aquiunaportemio:
Cdigo:
publicStringInvertir(intnum){
if(num<10)
returnString.valueOf(num);
else
returnString.valueOf(num%10)+Invertir(num/10);
}

AunqueojoqueahseestaretornadounStringynounintcomoespedido,claramenteestosimplificaextremadamenteelcdigoporquela
sumadecadenasdecaracteressimplementeseconcatenanadiferenciadelasumadenmerosdondesedebenelevarlosdgitosala
potenciarespectivaparalograrinvertirelnmero.Detodasmaneras,megustomuchotuimplementacin:)
Agregootraimplementacin:

publicstaticintinvertir(intn)
{
if(n/10==0)
returnn
else
{
Strings=String.valueOf(n)
intaux=n
intcontador=s.length()
while(aux%10!=0)
{
contador
break
}
return(int)((n%10)*Math.pow(10,contador)+invertir(n/10))
}
}

Saludos

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:pavelinhosen14Diciembre2010,23:06

Citade:criptofanen4Diciembre2010,20:11
AunqueojoqueahseestaretornadounStringynounintcomoespedido,claramenteestosimplificaextremadamenteelcdigoporquelasumadecadenasdecaracteressimplemente
seconcatenanadiferenciadelasumadenmerosdondesedebenelevarlosdgitosalapotenciarespectivaparalograrinvertirelnmero.Detodasmaneras,megustomuchotu
implementacin:)

Saludos
Otramaneraseria,convertirelStringenunintluegodeinvertir:
Cdigo

1. publicintInvertir(intnum){
2. Stringr;
3. if(num<10)
4. r=String.valueOf(num);
5. else
6. r=String.valueOf(num%10)+Invertir(num/10);
7. returnInteger.parseInt(r);
8. }
9.

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:hecteren10Febrero2011,20:20

Estafuncionutilizandolamismalogicaderecursividaddelaideaoriginalfunciona
FUNCTIONinvertir(nINTEGER)RETURNINTEGERdeterministicAS
vnumDiginteger
vnuParEnterapls_integer
BEGIN
vnuParEntera:=trunc(n,0)
vnumDig:=fnugetNumOfDig(vnuParEntera)estaesunafuncionquemeobtieneelnumerodedigito
ifvnumDig=1then
returnvnuParEntera
endif
return(vnuParEnteramod10)*Power(10,vnumDig1)+invertir(vnuParEntera/10)
ENDinvertir

http://foro.elhacker.net/printpage.htmltopic=231013.0 11/18
9/4/2015 ImprimirPginaEjerciciosRecursivosenJavaysusSoluciones

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:hecteren10Febrero2011,20:21

FUNCTIONinvertir(nINTEGER)RETURNINTEGERdeterministicAS
vnumDiginteger
vnuParEnterapls_integer
BEGIN
vnuParEntera:=trunc(n,0)
vnumDig:=fnugetNumOfDig(vnuParEntera)estaesunafuncionquemeobtieneelnumerodedigito
ifvnumDig=1then
returnvnuParEntera
endif
return(vnuParEnteramod10)*Power(10,vnumDig1)+invertir(vnuParEntera/10)
ENDinvertir

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:steven17en23Febrero2011,19:52

Comohariayoparaimplementarunafuncinderecursividadparacopiararregloshastallenarlamemoria.

Esqueocupocrearunprogramaquecreeunarregloqueselleneconmilnumerosenterosydespuesquehagacopiasdeesearreglohasta
caerenfallosdememoria

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:DeviiACen22Marzo2011,23:54

akilesmandoelmetodoinvertirenformarecursiva
publicintinvertir(intn){
intres=0
if(n<10){
res=n
}
else{
res=(n%10)*(int)Math.pow(10,cantDigitos(n)1)+invertir(n/10)
}
returnres
}

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:DeviiACen23Marzo2011,00:04

estuverevisandolosmetodosrealizadosenestapaginay
enlamayoriadelosmetodosviunerrorquenoestanerror

esteesmiconsejoytomenlodelladopositivovale

utilizanmuchoelreturnyloaconsejableesquesoloseinvokeelreturn
solouna1ves

byeyvivalaufc

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:DeviiACen25Marzo2011,21:50

holaatodosbueno
akilesdejounprogramitaquelessirvademucholointeresantedeestemetodoes
quehace3veceslallamadarecursiva
1
21
321
4321
54321
654321
asisucecivamente
publicinttriangulo(intn){
intres=0
if(n==1){
res=1
}
else{
res=(int)Math.pow(10,cantDigitos(triangulo(n1)))*n+triangulo(n1)
}
returnres
}

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:AleXInc.en20Abril2011,07:51

Medejarondetareaelejercicio13,quecoincidencia:P
Aquilodejoporsilessirvedealgoverotramaneraderesolverelcuadrolatino,yousemenosparametros.

http://foro.elhacker.net/printpage.htmltopic=231013.0 12/18
9/4/2015 ImprimirPginaEjerciciosRecursivosenJavaysusSoluciones
PD:Adjuntolaapiparaqueloprueben.
Cdigo:
publicvoidcLatino(int[][]mt,intfila,intcol)
{
if((fila+col+1)==mt.length)
mt[fila][col]=1;
elseif((fila+col)>=mt.length)
mt[fila][col]=(fila+col+2)mt.length;

if(col<mt.length1)col++;
elseif(fila<mt.length1){fila++;col=0;}
elsereturn;

cLatino(mt,fila,col);
}

publicvoidLatino(int[][]Mt)
{cLatino(Mt,0,0);}
Api:
http://upwap.ru/1455317(http://upwap.ru/1455317)

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:alfred_223315en5Mayo2011,04:30

Holahabersialguienmepuedeayudarnesesitoestealgoritmo(multiplicaciondematrices)enformarecursiva...

voidingreso(intm[][30],intf,intc){
for(inti=0i<fi++){
for(intj=0j<cj++){
cout<<"Valor["<<(i+1)<<"]["<<(j+1)<<"]="
cin>>m[j]
}
}
}

voidmostrar(intm[][30],intf,intc){
for(inti=0i<fi++){
for(intj=0j<cj++){
cout<<"Valor["<<(i+1)<<"]["<<(j+1)<<"]="
cout<<m[j]<<endl
}
}
}

voidmultiplica(intm1[][30],intm2[][30],intp[][30],intf1,intc1,intf2,intc2){
for(inti=0i<f1i++){
for(intj=0j<c2j++){
for(intk=0k<c1k++){
p[j]=p[j]+(m1[k])*(m2[k][j])
}
}
}
cout<<"\n\n\t\tELPRODUCTODEVECTORESES\n\n"
mostrar(p,f1,c2)
}

voidinicializaValoresEnCero(intp[][30],intf,intc){
for(inti=0i<fi++){
for(intj=0j<cj++){
p[j]=0
}
}
}

intmain(){
intM1[30][30],M2[30][30],P[30][30],f1,c1,f2,c2
cout<<"\n\tPrimeraMatriz"<<endl
do{
cout<<"Ingreseelnumerodefilas"
cin>>f1
}while(f1<1||f1>30)
do{
cout<<"Ingreseelnumerodecolumnas"
cin>>c1
}while(c1<1||c1>30)

ingreso(M1,f1,c1)

cout<<"\n\tSegundaMatriz"<<endl
do{
cout<<"Ingreseelnumerodefilas"
cin>>f2
}while(f2<1||f2>30)
do{
cout<<"Ingreseelnumerodecolumnas"
cin>>c2
}while(c2<1||c2>30)
ingreso(M2,f2,c2)

http://foro.elhacker.net/printpage.htmltopic=231013.0 13/18
9/4/2015 ImprimirPginaEjerciciosRecursivosenJavaysusSoluciones
if(c1==f2){

cout<<"Sepuedemultiplicar"<<endl
inicializaValoresEnCero(P,f1,c2)
multiplica(M1,M2,P,f1,c1,f2,c2)
}
else
cout<<"NOSepuedemultiplicar"<<endl
system("pause")
return0
}

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:Berrincheen9Mayo2011,02:39

Megustarasabercomohacerunmtodorecursivoquerecibaunnmeroenterobinarioydevuelvaelnmeroentero
decimalequivalente.Ytambincomohacerunmtodorecursivoquerecibaunnmeroenterodecimalydevuelvaunacadenaconel
nmeroequivalentehexadecimal.

Notengoideanidecomocomenzar.
LBN

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:owfeien10Mayo2011,08:13

Enc++resolvieldeinvertirdestamanera:

Cdigo

1. #include<math.h>
2.
3. intinv(intn){
4. if(n<=9)returnn;
5. elsereturninv(n/10)+inv(n%10)*pow(10,n%101);
6. }

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:Mr.Shaken11Mayo2011,18:02

holaatodos:

Estoyhaciendouncursodejava,enelcualtengoqueutilizarunafuncinrecursiva,opongoenantecedentes:

Estamoscreandounmulticine,paracomprarentradasydemas.Elproblemavienealahoradereservarasientos,loscualespuedesser
consecutivos(sitenemossuerte)ono(queesmicaso).

Lahistoriaesquesiunclientevaacomprar5entradasalcine,ynotienen5entradascorrelativasenlafilaquequieradichocliente,loshe
dereubicarenotrazonadelcineyenelpeordeloscasosenelquenohayaporningunlado5asientosconsecutivos,puesporejemplo
ponerlos3enunafilay2enlasiguientejustodelante,ysinodelamaneraenlaquepuedanestarmascercaunosdeotros.

Novoyadecirquemeresolvaiselcodigo,evidentemente,perolaverdadesquenotengonip**aideadecomohacerlo.Necesitoayudade
cualquiertipo.

Muchasgracias

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:trueno_dpen15Junio2011,20:20

Hola,necesitosacardeformarecursivalosdivisoresdeunnumero,tengolaiterativa,peronienbromaconsigalarecursiva.graciaas

publicstaticintrecursividad(intnumero){

if(numero>2)
{

return0
}else
{


returnrecursividad(numero%numero1)
}

}

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:TheKaleb32en16Junio2011,06:08

/*
Aquiestaunaopciondecomosepuedengenerarconrecursividadelejerciciodeinvertirunnumero..SeregresaunString,yparasolucionar
elproblemadeimprimircerosinnecesariosalinicioofinaldelString,ocupouncontadoryunacondicinextra..!
**/
http://foro.elhacker.net/printpage.htmltopic=231013.0 14/18
9/4/2015 ImprimirPginaEjerciciosRecursivosenJavaysusSoluciones

publicstaticvoidmain(String[]args){
System.out.println(invertir(1230456))
}//cierrometodomain

publicstaticStringinvertir(inta,intb){

intc=++b

if(a%10==0&&c1==0){
return(""+invertir((a/10),c1))
}else{
if(a==0)
return""
else
return((a%10)+invertir((a/10),c))
}
}//cierrometodoinvertir

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:primoxheroen21Junio2011,23:25

porfavorMEPUEDENAYUDARENESTAsumatoriaEJERCICIOeslasiguiente:
X^1/1!+X^2/2!+X^N/N!

Ttulo:EjerciciosRecursivosenJavaysusSoluciones>>InvertiroNumeroRecursivos
Publicadopor:Skarloen1Diciembre2011,03:36

Stringpal=JOptionPane.showInputDialog("Introducelapalabra")
JOptionPane.showMessageDialog(null,palabra(pal,pal.length(),"Suinvertidoes:"))
}
staticStringpalabra(Stringc,intinv,Stringtama)
{
inv=inv1
if(inv>=0)
{
tama=tama+c.charAt(inv)
returnpalabra(c,inv,tama)
}
elsereturntama
}

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:ato2112en4Diciembre2011,23:13

sinwhile/for/etc.

publicintinvertir(intn){
Stringaux=Integer.toString(n)
if(n<10)
returnn
elsereturn(int)((n%10)*Math.pow(10,aux.length()1)+invertir(n/10))

}

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:jert2004en18Julio2013,17:42

Quienmepuedeayudarsumatoriae^x/x!recursividadjava?
favormepodrianayudaryaquellevovariosdiassinresolver,masomenostengoestecodigo
eslasumatoriadeealaxsobrexfactorial
dondee=2.718186yxingresaelusuario

packageejrecursividad

importjava.util.Scanner

publicclassSumaFactorialLeperiano{

staticdoubleFACTOR(intvalor1){
if(valor1==0){
return2.718186
}else{
intvalor2
valor2=valor1
return(Math.pow(2.718186,valor1)/(valor2))+(Math.pow(2.718186,FACTOR(valor11))/(valor2*FACTOR(valor21)))
}
}

publicstaticvoidmain(String[]args){
doubleresultado
intvalor1

http://foro.elhacker.net/printpage.htmltopic=231013.0 15/18
9/4/2015 ImprimirPginaEjerciciosRecursivosenJavaysusSoluciones
System.out.println("ingresenro1")
Scannermrno=newScanner(System.in)
valor1=mrno.nextInt()
resultado=FACTOR(valor1)
System.out.println("LASUMATORIADEL:"+valor1+"ES:"+resultado)

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:vhsreturnsen9Diciembre2013,14:09

DespusdebastantesvueltasconseguelcdigojajajajaNosecomoponesesastablitastanbonitasqueponeisvosotros,perooslopegoaqui
aversialgunopuedehacermeelfavordeponerlobien:)

/**
*subprogramaquerecojeunnmeroportecladoylodevuelveinvertidoenelorden
*@paramnum(numeroquerecojemosportecladoyqueremosinvertir)
*@returnresultado(numeroinvertido)
*/
publicstaticStringinvertir(intnum){
Stringresultado=""
if(num<10)//casobase
resultado=resultado+num
else{//casogeneral
resultado=invertir(num/10)
resultado=((num%10)+",")+resultado
}
returnresultado
}

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:kakimanuen27Septiembre2014,18:30

Citade:Amerikano|Clsen27Noviembre2008,22:30
Oyeunarecomendacin,eldefibonnacinoesconvenientehacerloporrecursividad,porlosiguiente,yesquelasllamadasrecursivassedividenendoslocualconllevaarepetirunmismo
procesomasdedosvecesyesolerestavelocidadyeficiencia:xDerasoloesojeje.

salu2

Perosiqueesconvenientesilohacesconmemoria,estoloqueharesahorrarungrannmerodeoperacionesyaquelasqueyaha
calculadolasguardaenunmapaycuandosenecesitaseutilizanlosresultadosguardados:

Cdigo

1. publicstaticintfibonacciMemoria(intn,Map<Integer,Integer>m){
2.
3. intres=0;
4.
5. if(n<=1){
6. returnn;
7. }else{
8. intfibon1=0;
9. intfibon2=0;
10. if(m.containsKey(n1)){
11. fibon1=m.get(n1);
12. }else{
13. fibon1=fibonacciMemoria(n1,m);
14. }
15.
16. if(m.containsKey(n2)){
17. fibon2=m.get(n2);
18. }else{
19. fibon2=fibonacciMemoria(n2,m);
20. }
21.
22. res=fibon1+fibon2;
23. m.put(n,res);
24. }
25.
26. returnres;
27.
28. }

YyasiquierescalcularconnmerosmasgrandespuedeshacerloconBigIntegerdeigualforma:

Cdigo

1. publicstaticBigIntegerfibonacciGrande(BigIntegern,Map<BigInteger,BigInteger>m){
2.
3. BigIntegerres=newBigInteger("0");
4.
5. if(n.compareTo(newBigInteger("1"))<=0){
6. returnn;
7. }else{
8. BigIntegerfibon1=newBigInteger("0");
9. BigIntegerfibon2=newBigInteger("0");
10. if(m.containsKey(n.subtract(newBigInteger("1")))){
11. fibon1=m.get(n.subtract(newBigInteger("1")));
12. }else{
13. fibon1=fibonacciGrande(n.subtract(newBigInteger("1")),m);
14. }
15.
16. if(m.containsKey(n.subtract(newBigInteger("2")))){

http://foro.elhacker.net/printpage.htmltopic=231013.0 16/18
9/4/2015 ImprimirPginaEjerciciosRecursivosenJavaysusSoluciones
17. fibon2=m.get(n.subtract(newBigInteger("2")));
18. }else{
19. fibon2=fibonacciGrande(n.subtract(newBigInteger("2")),m);
20. }
21.
22. res=fibon1.add(fibon2);
23. m.put(n,res);
24. }
25.
26. returnres;
27.
28. }

Unsaludo.

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:Bundoren18Octubre2014,05:44

Chincheta

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:DarK_FirefoXen18Octubre2014,07:05

Citade:kakimanuen27Septiembre2014,18:30
Perosiqueesconvenientesilohacesconmemoria,estoloqueharesahorrarungrannmerodeoperacionesyaquelasqueyahacalculadolasguardaenunmapaycuandose
necesitaseutilizanlosresultadosguardados:

Cdigo

1. publicstaticintfibonacciMemoria(intn,Map<Integer,Integer>m){
2.
3. intres=0;
4.
5. if(n<=1){
6. returnn;
7. }else{
8. intfibon1=0;
9. intfibon2=0;
10. if(m.containsKey(n1)){
11. fibon1=m.get(n1);
12. }else{
13. fibon1=fibonacciMemoria(n1,m);
14. }
15.
16. if(m.containsKey(n2)){
17. fibon2=m.get(n2);
18. }else{
19. fibon2=fibonacciMemoria(n2,m);
20. }
21.
22. res=fibon1+fibon2;
23. m.put(n,res);
24. }
25.
26. returnres;
27.
28. }

YyasiquierescalcularconnmerosmasgrandespuedeshacerloconBigIntegerdeigualforma:

Cdigo

1. publicstaticBigIntegerfibonacciGrande(BigIntegern,Map<BigInteger,BigInteger>m){
2.
3. BigIntegerres=newBigInteger("0");
4.
5. if(n.compareTo(newBigInteger("1"))<=0){
6. returnn;
7. }else{
8. BigIntegerfibon1=newBigInteger("0");
9. BigIntegerfibon2=newBigInteger("0");
10. if(m.containsKey(n.subtract(newBigInteger("1")))){
11. fibon1=m.get(n.subtract(newBigInteger("1")));
12. }else{
13. fibon1=fibonacciGrande(n.subtract(newBigInteger("1")),m);
14. }
15.
16. if(m.containsKey(n.subtract(newBigInteger("2")))){
17. fibon2=m.get(n.subtract(newBigInteger("2")));
18. }else{
19. fibon2=fibonacciGrande(n.subtract(newBigInteger("2")),m);
20. }
21.
22. res=fibon1.add(fibon2);
23. m.put(n,res);
24. }
25.
26. returnres;
27.
28. }

Unsaludo.

Exactamentecomodicekakimanu,sepuedehacerelfibonaccideformadinmica,aquilesdejounejemplorecursivodelaformadinamica
manteniendolosvaloresyacalculadosenunarraydelong,amientenderunpoquitomssencilla.

Cdigo

1. staticvoidMain(string[]args)
2. {
3. longn=long.Parse(Console.ReadLine());//Sesolicitaelterminodefibonacciacalcular
4. fibonacci=newlong[n+1];

http://foro.elhacker.net/printpage.htmltopic=231013.0 17/18
9/4/2015 ImprimirPginaEjerciciosRecursivosenJavaysusSoluciones
5. Console.WriteLine(Fibonacci(n));
6.
7. }
8.
9. staticlongFibonacci(longn)
10. {
11. if(fibonacci[n]!=0)//Severificasinosecalculoya
12. returnfibonacci[n];//Sedevuelvesiyasecalculo
13. if(n==1||n==2)
14. return1;
15. fibonacci[n2]=Fibonacci(n2);//seguardaenelarray
16. fibonacci[n1]=Fibonacci(n1);//seguardaenelarray
17. returnfibonacci[n2]+fibonacci[n1];
18. }

Ttulo:Re:EjerciciosRecursivosenJavaysusSoluciones
Publicadopor:optimus88en6Noviembre2014,19:27

nproblemaderecursividadenC,delaexpresiondeabajohayquesacarunadefinicionderecursividadmostrandoelcasobaseylafuncion
recursiva.
Elproblemaeseste:

Elnmerodeeuleresampliamenteutilizado
enelclculomatemticoperoquenopuede
serexpresadoconunnmerodedecimales
finito.Tieneunvaloraproximadode2,718.
Parapoderobteneraproximacionesde
dichonmeroexistendiferentesreglasque
puedenseraplicadas.Siguiendoundesarrollo
decimalcomoelmostradoenlafigura,puede
obtenerseelnmeroe.
Parapoderrealizarunalgoritmoquerealicedichoclculoaproximadose
requierecrearunafuncinconelsiguienteprototipo:
floatf_euler(intn)
Estafuncindevolverlaaproximacindelnmeroeaplicandondesarrollos.
Comopuedesuponer,mientrasmsgrandesean(msdesarrollossernaplicados),
mejorserlaaproximacin.Considerelossiguientesejemplos:
f_euler(0)=2
f_euler(1)=2+2/2=3
f_euler(2)=2+2/(2+3/3)=2.6666
f_euler(5)=2+2/(2+3/(3+4/(4+5/(5+6/6)))))=2.7184

PoweredbySMF1.1.20|SMF20062008,SimpleMachines

http://foro.elhacker.net/printpage.htmltopic=231013.0 18/18

También podría gustarte