Ejercicio+de+Recursividad+resueltos

download Ejercicio+de+Recursividad+resueltos

of 14

Transcript of Ejercicio+de+Recursividad+resueltos

  • 8/16/2019 Ejercicio+de+Recursividad+resueltos

    1/14

    Ejercicio de Recursividad

    Ejercicio 1. Programar un algoritmo recursivo que calcule el factorial de un número.

    Solución:

    Código

    1. int factorial(int n){

    2. if(n==0) return 1;  //AXIOMA 

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

    4. } 

    Planteamiento:

    Ejercicio 2. Programar un algoritmo recursivo que calcule un número de la serie fibonacci.

    Solución:

    Código

    1.int

     fibonaci(int

     n){

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

    3. else return fibonaci(n-1)+fibonaci(n-2);

    4. } 

    Planteamiento:

    Ejercicio 3. Programar un algoritmo recursivo que permita hacer la división por restassucesivas.

    Solución:

    Código

  • 8/16/2019 Ejercicio+de+Recursividad+resueltos

    2/14

    1. int division (int a, int b)

    2. {

    3.   if(b  a) return 0;

    4.   else

    !. return division(a-b, b) + 1;

    ". }

    #.

    Planteamiento:

    Ejercicio 4. Programar un algoritmo recursivo que permita invertir un número. Ejemplo:

    Entrada: 123 Salida: 321

    Solución:

    Código

    1. int inv$rtir (int n)

    2. {

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

    4. return n;

    !.   else

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

    #. }

    Planteamiento:

    Ejercicio 5. Programar un algoritmo recursivo que permita sumar los dígitos de un número.

  • 8/16/2019 Ejercicio+de+Recursividad+resueltos

    3/14

    Ejemplo: Entrada: 123 Resultado:6 

    Solución:

    Código

    1. int sardi (int n)

    2. {

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

    4. return n;

    !.   else

    ". return sardi (n ' 10) + (n & 10);

    #. }

    Planteamiento:

    Ejercicio 6. Programar un algoritmo recursivo que permita hacer una multiplicaciónutili!ando el m"todo Ruso. Para mas informacion: aqui.

    Solución:

    Código

    1. int ltrsa(int , int )

    2. { 

    3. if(==1){

    4. return ();

    !. }

    ".   if(&2=0){

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

    http://es.wikipedia.org/wiki/Multiplicaci%C3%B3n_por_duplicaci%C3%B3nhttp://es.wikipedia.org/wiki/Multiplicaci%C3%B3n_por_duplicaci%C3%B3n

  • 8/16/2019 Ejercicio+de+Recursividad+resueltos

    4/14

    /. }

    .   else{

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

    11. } 

    12. }

    Planteamiento:

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

    vector.

    Solución:

    Código

    1. int sav$c(int v , int n)

    2. {

    3.   if (n == 0)

    4. return v n;

    !.   else

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

    #. }

    Planteamiento:

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

    vector.

    Solución:

  • 8/16/2019 Ejercicio+de+Recursividad+resueltos

    5/14

    Código

    1. int ltilicar (int v$c , int ta)

    2. {

    3.   if (ta == 0)

    4. return (v$c 0);

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

    ". }

    Planteamiento:

    Ejercicio 9. Programar un algoritmo recursivo que calcule el #a$imo comun divisor dedos números.

    Solución:

    Código

    1. int sacarcd(int a, int b) {

    2. if(b==0)

    3. return a;

    4. else

    !. return sacarcd(b, a & b);

    ". }

    #.

    Planteamiento:

    Ejercicio 1. Programar un algoritmo recursivo que determine si un número es positivo.

  • 8/16/2019 Ejercicio+de+Recursividad+resueltos

    6/14

    Solución:

    Código

    1.  public  boolean ositivo(int n){

    2. if(n0) return true;

    3. else return n$ativo(n);

    4. }

    !.

    ".  public  boolean n$ativo(int n){

    #. if(n%0) return false;

    /. else return  ositivo(n);

    . }

    Planteamiento:

    Ejercicio 11. Programar un algoritmo recursivo que determine si un número es impar

    utili!ando recursividad cru!ada.

    Solución:

    Código

    1.  public  boolean ar(int n){

    2.   if(n==0) return true;

    3.   else return iar(n-1);

    4. }

    !.

    ".   public  boolean iar(int n){

  • 8/16/2019 Ejercicio+de+Recursividad+resueltos

    7/14

    #.   if(n==0) return false;

    /.   else return ar(n-1);

    . }

    Planteamiento:

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

    matri!.

    Solución:

    Código

    1. int sa (int fila, int col, int ord$n, int at  )

    2. {

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

    4. return at 0 0;

    !.   else

    ". if (col % 0)

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

    /. else

    .   return at fila col + sa (fila, col - 1, ord$n,

    at);

    10. }

    Planteamiento:

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

    Ejemplo de cuadro latino:

  • 8/16/2019 Ejercicio+de+Recursividad+resueltos

    8/14

    1

    1 2

    1 2 3

    1 2 3 4

    1 2 3 4 5

    Solución:

    Código

    1. latino (int fila, int col, int cont, int ord$n, int at  )

    2. {

    3.  if

     (fila == 0  col == 0)

    4. at 0 0 = 1;

    !.   else

    ". if (fila == col)

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

    /. else

    . {

    10. at fila col = 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 1

  • 8/16/2019 Ejercicio+de+Recursividad+resueltos

    9/14

    1 2 2 2 2

    1 2 4 4 4

    1 2 4 8 8

    1 2 4 8 16

    Solución: Solucionado por : !meRi"#n$

    Código

    1.   public class 5atri67$crsividad {

    2.

    3.   private static int a=0, a8=1, b=0; //Declaramos los datos

    necesarios

    4.   private static int atri6 = new int""; //La matriz debeser cuadrada

    !.

    ".   public static void  ain(9trin ars) {

    #.

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

    recursio

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

    10.

    11. }

    12.

    13.   public static void  ll$nar5atri6(int atri6, int i, int

    :){

    14.

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

    coluna$ reseteamos los datos !ara la si"uiente

    1". i++;

    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

  • 8/16/2019 Ejercicio+de+Recursividad+resueltos

    10/14

    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

    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);

  • 8/16/2019 Ejercicio+de+Recursividad+resueltos

    11/14

    3!. }

    3". }

    3#. }

    3/.

    3.   public static void  iriir(){ //este metodo nos im!rime

    la matriz !or consola

    40.

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

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

    43. 9

  • 8/16/2019 Ejercicio+de+Recursividad+resueltos

    12/14

    3.   if (c == n * n)

    4. {

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

    ". }

    #.   else

    /. {

    . if (fil % 0  col$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

    20. {

    21. if (col$dio == n)

    22. {

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

    24. }

    2!. else

  • 8/16/2019 Ejercicio+de+Recursividad+resueltos

    13/14

    2". {

    2#.   if (at fil col$dio == 0)

    2/. {

    2. at fil col$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. }

    Planteamiento:

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

    Solución:

    Código

    1. int $norv$c (int 8 , int n, int $nor) {

  • 8/16/2019 Ejercicio+de+Recursividad+resueltos

    14/14

    2. if (n == 0)

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

    4. else return $nor;

    !. else

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

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

    Planteamiento:

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

    Solución:

    Código

    1. int a