Ejercicios-recursividad

download Ejercicios-recursividad

of 14

Transcript of Ejercicios-recursividad

  • 7/25/2019 Ejercicios-recursividad

    1/14

    Ejercicio 1. Programar un algoritmo recursivo que calcule el factorial de un nmero.

    Solucin:

    Cdigo

    1. intfactorial(intn){

    2. if(n==0)return1; //AXIOMA

    3. elsereturnn*factorial(n-1); //FORMULA RECURSIVA

    4. }

    Planteamiento:

    Ejercicio 2. Programar un algoritmo recursivo que calcule un nmero de la serie fibonacci.

    Solucin:

    Cdigo

    1. intfibonaci(intn){

    2. if(n==1||n==2)return1;

    3. elsereturnfibonaci(n-1)+fibonaci(n-2);

    4. }

    Planteamiento:

    Ejercicio 3. Programar un algoritmo recursivo que permita hacer la divisin por restassucesivas.

    Solucin:

    Cdigo

    1. intdivision (inta, intb)

    2. {

    3. if(b a)return0;

  • 7/25/2019 Ejercicios-recursividad

    2/14

    4. else

    !. returndivision(a-b, b)+1;

    ". }

    #.

    Planteamiento:

    Ejercicio 4. Programar un algoritmo recursivo que permita invertir un nmero. Ejemplo:Entrada: 123 Salida: 321

    Solucin:

    Cdigo

    1. intinv$rtir (intn)

    2. {

    3. if(n %10) //caso base

    4. returnn;

    !. else

    ". return(n &10)+inv$rtir (n '10)*10;

    #. }

    Planteamiento:

    Ejercicio 5. Programar un algoritmo recursivo que permita sumar los dgitos de un

    nmero. Ejemplo: Entrada:123

    Resultado:6

    Solucin:

    Cdigo

    1. intsardi (intn)

    2. {

  • 7/25/2019 Ejercicios-recursividad

    3/14

    3. if(n ==0) //caso base

    4. returnn;

    !. else

    ". returnsardi (n '10)+(n &10);

    #. }

    Planteamiento:

    Ejercicio 6. Programar un algoritmo recursivo que permita hacer una multiplicacin utili!andoel m"todo Ruso. Para mas informacion: aqui.

    Solucin:

    Cdigo

    1. intltrsa(int, int)

    2. {

    3. if(==1){

    4.return

    ();

    !. }

    ". if(&2=0){

    #. return(+ltrsa('2, *2));

    /. }

    . else{

    10. return(ltrsa('2, *2));

    11. }

    12. }

    http://es.wikipedia.org/wiki/Multiplicaci%C3%B3n_por_duplicaci%C3%B3nhttp://es.wikipedia.org/wiki/Multiplicaci%C3%B3n_por_duplicaci%C3%B3n
  • 7/25/2019 Ejercicios-recursividad

    4/14

    Planteamiento:

    Ejercicio 7. Programar un algoritmo recursivo que permita sumar los elementos de un vector.

    Solucin:

    Cdigo

    1. intsav$c(intv , intn)

    2. {

    3. if(n ==0)

    4. returnv n;

    !. else

    ". returnsav$c(v, n -1)+v n;

    #. }

    Planteamiento:

    Ejercicio 8. Programar un algoritmo recursivo que permita multiplicar los elementos de unvector.

    Solucin:

    Cdigo

    1. intltilicar (intv$c , intta)

    2. {

    3. if(ta ==0)

    4. return(v$c 0);

    !. return(v$c ta*ltilicar (v$c, ta -1));

    ". }

  • 7/25/2019 Ejercicios-recursividad

    5/14

    Planteamiento:

    Ejercicio 9. Programar un algoritmo recursivo que calcule el #a$imo comun divisor de dosnmeros.

    Solucin:

    Cdigo

    1. intsacarcd(inta, intb){

    2. if(b==0)

    3. returna;

    4. else

    !. returnsacarcd(b, a &b);

    ". }

    #.

    Planteamiento:

    Ejercicio 10. Programar un algoritmo recursivo que determine si un nmero es positivo.

    Solucin:

    Cdigo

    1. publicbooleanositivo(intn){

    2. if(n0)returntrue;

    3. elsereturnn$ativo(n);

    4. }

    !.

    ". publicbooleann$ativo(intn){

    #. if(n%0)returnfalse;

  • 7/25/2019 Ejercicios-recursividad

    6/14

    /. elsereturn ositivo(n);

    . }

    Planteamiento:

    Ejercicio 11. Programar un algoritmo recursivo que determine si un nmero es impar utili!andorecursividad cru!ada.

    Solucin:

    Cdigo

    1. publicbooleanar(intn){

    2. if(n==0)returntrue;

    3. elsereturniar(n-1);

    4. }

    !.

    ". publicbooleaniar(intn){

    #. if

    (n==0)return

    false

    ;

    /. elsereturnar(n-1);

    . }

    Planteamiento:

    Ejercicio 12. Programar un algoritmo recursivo que permita sumar los elementos de una

    matri!.

    Solucin:

    Cdigo

    1. intsa (intfila, intcol, intord$n, intat )

    2. {

  • 7/25/2019 Ejercicios-recursividad

    7/14

    3. if(fila ==0col ==0)

    4. returnat 00;

    !. else

    ". if(col %0)

    #. returnsa (fila -1, ord$n, ord$n, at);

    /. else

    . returnat filacol+sa (fila, col -1, ord$n, at);

    10. }

    Planteamiento:

    Ejercicio 13. Programar un algoritmo recursivo que permita resolver el cuadro latino. Ejemplode cuadro latino:

    0 0 0 0 10 0 0 1 20 0 1 2 30 1 2 3 41 2 3 4 5

    Solucin:

    Cdigo

    1. latino (intfila, intcol, intcont, intord$n, intat )

    2. {

    3. if(fila ==0col ==0)

    4. at 00=1;

    !. else

    ". if(fila ==col)

    #. latino (fila -1, ord$n -1, ord$n, ord$n, at);

  • 7/25/2019 Ejercicios-recursividad

    8/14

    /. else

    . {

    10. at filacol=cont;

    11. latino (fila, col -1, ord$n +1, ord$n, at);

    12. }

    13. }

    Planteamiento:

    Ejercicio 14. Programar un algoritmo recursivo que permita resolver la siguiente matri!:

    1 1 1 1 11 2 2 2 21 2 4 4 41 2 4 8 81 2 4 8 16

    Solucin: Solucionado por: AmeRi!n"

    Cdigo

    1. publicclass5atri67$crsividad {

    2.

    3. privatestaticinta=0, a8=1, b=0;//Declaramos los datos necesarios

    4. privatestaticintatri6 =newint"";//La matriz debe ser

    cuadrada

    !.

    ". publicstaticvoidain(9trinars){

    #.

    /. ll$nar5atri6(atri6, a, b);//Iniciamos el llamado recursio

    . iriir();//im!rimimos la matriz

    http://www.google.com/search?hl=en&q=allinurl%3Astring+java.sun.com&btnI=I%27m%20Feeling%20Luckyhttp://www.google.com/search?hl=en&q=allinurl%3Astring+java.sun.com&btnI=I%27m%20Feeling%20Lucky
  • 7/25/2019 Ejercicios-recursividad

    9/14

    10.

    11. }

    12.

    13. publicstaticvoidll$nar5atri6(intatri6, inti, int:){

    14.

    1!. if(: atri6.l$nt-1){//Si lle"# a la ultima coluna$

    reseteamos los datos !ara la si"uiente

    1". i++;

    1#. :=0;

    1/. a8++;

    1. }

    20. if(i %atri6.l$nt){// com!ara %ue no &allamos lle"ado al

    'inal

    21.

    22. if(i==(a8-1): =(a8-1)){//com!rueba %ue estemos

    en el lu"ar adecuado$ es decir ira im!rimiento escaladamente

    23. if(i==0)// si es la !rimera 'ila in"resamos

    au()*

    24. atri6i:=atri6i:=a8;

    2!. else

    2". atri6i:=atri6ii-

    1*2;//in"resamos el alor corres!ondiente al ultimo de la +escala+ ,-

    2#. ll$nar5atri6(atri6, i , :+1);

    2/. }

    2. else{//si no$ asi"namos los alores anteriores de la

    escala

  • 7/25/2019 Ejercicios-recursividad

    10/14

    30. if(:==0)// com!robamos si es el !rimer di"ito a

    in"resar

    31. atri6i:=:+1;

    32. else

    33. atri6i:=atri6i-1:;//

    asi"namos el mismo numero de la 'ila anterior .i*0

    34. ll$nar5atri6(atri6, i, :+1);

    3!. }

    3". }

    3#. }

    3/.

    3. publicstaticvoidiriir(){//este metodo nos im!rime la matriz !or

    consola

    40.

    41. for(inti=0;i%atri6.l$nt;i++){

    42. for(int:=0;:%atri6.l$nt;:++){

    43. 9

  • 7/25/2019 Ejercicios-recursividad

    11/14

    Planteamiento:

    Ejercicio 15. Programar un algoritmo recursivo que e%ecute la matri! del cubo m&gico.

    Solucin:

    Cdigo

    1. voidaico(intat , intfil, intcol$dio, intc, intn)

    2. {

    3. if(c ==n *n)

    4. {

    !. at n-1col$dio=c;

    ". }

    #. else

    /. {

    . if(fil %0col$dio ==n)

    10. {

    11. aico(at, fil +2, n -1, c, n);

    12. }

    13. else

    14. {

    1!. if(fil %0)

    1". {

    1#. aico(at, n -1, col$dio, c, n);

    1/. }

    1. else

  • 7/25/2019 Ejercicios-recursividad

    12/14

    20. {

    21. if(col$dio ==n)

    22. {

    23. aico(at, fil, 0, c, n);

    24. }

    2!. else

    2". {

    2#. if(at filcol$dio==0)

    2/. {

    2. at filcol$dio=c;

    30. aico(at, fil -1, col$dio +1, c +1, n);

    31. }

    32. else

    33. {

    34. aico(at, fil +2, col$dio -1, c, n);

    3!. }

    3". }

    3#. }

    3/. }

    3.

    40. }

    41. }

  • 7/25/2019 Ejercicios-recursividad

    13/14

    Planteamiento:

    Ejercicio 16. Programar un algoritmo recursivo que muestre el numero menor de un vector.

    Solucin:

    Cdigo

    1. int$norv$c (int8 , intn, int$nor){

    2. if(n ==0)

    3. if($nor 8 n)return8 0;

    4. elsereturn$nor;

    !. else

    ". if($nor 8 n)return$norv$c (8, n -1, 8 n);

    #. elsereturn$norv$c (8, n -1, $nor);}

    Planteamiento:

    Ejercicio 17. Programar un algoritmo recursivo que muestre el numero ma'or de un vector.

    Solucin:

    Cdigo

    1. inta

  • 7/25/2019 Ejercicios-recursividad

    14/14

    /. }

    . }