Ejercicio+de+Recursividad+resueltos
-
Upload
tatiana-benavides -
Category
Documents
-
view
217 -
download
0
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