Sei sulla pagina 1di 30

Foro de elhacker.

net
Programacin => Ejercicios => Mensaje iniciado por: ohk en 11 Octubre 2008, 03:19
Ttulo: Ejercicios Recursivos en Java y sus Soluciones Publicado por: ohk en 11 Octubre 2008, 03:19

Planteamiento del Ejercicio acompaado del algoritmo de resolucin en Java


Planteamiento: Ejercicio 1. Programar un algoritmo recursivo que calcule el factorial de un nmero. Solucin: Cdigo
int factorial(int n){ if(n==0) return 1; //AXIOMA else return n*factorial(n-1); } //FORMULA RECURSIVA

Planteamiento: Ejercicio 2. Programar un algoritmo recursivo que calcule un nmero de la serie fibonacci. Solucin: Cdigo
int fibonaci(int n){ if(n==1 || n==2) return 1; else return fibonaci(n-1)+fibonaci(n-2); }

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

restas sucesivas. Solucin: Cdigo


int division (int a, int b) { if(b > a) return 0; else return division(a-b, b) + 1; }

Planteamiento: Ejercicio 4. Programar un algoritmo recursivo que permita invertir un nmero. Ejemplo: Entrada: 123 Salida: 321 Solucin: Cdigo
int invertir (int n) { if (n < 10) //caso base return n; else return (n % 10) + invertir (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
int sumar_dig (int n) { if (n == 0) //caso base return n; else return sumar_dig (n / 10) + (n % 10); }

Planteamiento: Ejercicio 6. Programar un algoritmo recursivo que permita hacer una multiplicacin, utilizando el mtodo Ruso. Para mas informacion: aqui (http://es.wikipedia.org/wiki/Multiplicacin_por_duplicacin). Solucin: Cdigo
int mult_rusa(int A, int B) { if(A==1){ return (B); } if(A%2!=0){ return(B+mult_rusa( A/2 , B*2)); } else{ return(mult_rusa( A/2 , B*2)); } }

Planteamiento: Ejercicio 7. Programar un algoritmo recursivo que permita sumar los elementos de un vector. Solucin: Cdigo
int suma_vec(int v [], int n) { if (n == 0) return v [n]; else return suma_vec(v, n - 1) + v [n]; }

Planteamiento: Ejercicio 8. Programar un algoritmo recursivo que permita multiplicar los elementos de un vector. Solucin: Cdigo
int multiplicar (int vec [], int tam)

{ if (tam == 0) return (vec [0]); return (vec [tam] * multiplicar (vec, tam - 1)); }

Planteamiento: Ejercicio 9. Programar un algoritmo recursivo que calcule el Maximo comun divisor de dos nmeros. Solucin: Cdigo
int sacar_mcd(int a, int b) { if(b==0) return a; else return sacar_mcd(b, a % b); }

Planteamiento: Ejercicio 10. Programar un algoritmo recursivo que determine si un nmero es positivo. Solucin: Cdigo
public boolean positivo(int n){ if(n>0) return true; else return negativo(n); } public boolean negativo(int n){ if(n<0) return false; else return positivo(n); }

Planteamiento: Ejercicio 11. Programar un algoritmo recursivo que determine si un nmero es impar utilizando recursividad cruzada.

Solucin: Cdigo
public boolean par(int n){ if(n==0) return true; else return impar(n-1); } public boolean impar(int n){ if(n==0) return false; else return par(n-1); }

Planteamiento: Ejercicio 12. Programar un algoritmo recursivo que permita sumar los elementos de una matriz. Solucin: Cdigo
int suma (int fila, int col, int orden, int mat [] []) { if (fila == 0 && col == 0) return mat [0] [0]; else if (col < 0) return suma (fila - 1, orden, orden, mat); else return mat [fila] [col] + suma (fila, col - 1, orden, mat); }

Planteamiento: Ejercicio 13. Programar un algoritmo recursivo que permita resolver el cuadro latino. Ejemplo de cuadro latino: 00001 00012 00123 01234 12345

Solucin:

Cdigo
latino (int fila, int col, int cont, int orden, int mat [] []) { if (fila == 0 && col == 0) mat [0] [0] = 1; else if (fila == col) latino (fila - 1, orden - 1, orden, orden, mat); else { mat [fila] [col] = cont; latino (fila, col - 1, orden + 1, orden, mat); } }

Planteamiento: Ejercicio 14. Programar un algoritmo recursivo que permita resolver la siguiente matriz: 11111 12222 12444 12488 1 2 4 8 16 Solucin: Solucionado por: AmeRiK@nO Cdigo
public class MatrizRecursividad { private static int a=0, aux=1, b=0; //Declaramos los datos necesarios private static int[][] matriz = new int[6][6]; //La matriz debe ser cuadrada public static void main(String[] args) { llenarMatriz(matriz, a, b); //Iniciamos el llamado recursivo imprimir(); //imprimimos la matriz } public static void llenarMatriz(int matriz[][], int i, int j){ if(j > matriz.length -1){ //Si lleg a la ultima coluna, reseteamos los datos para la siguiente i++;

j=0; aux++; } if(i <matriz.length){ // compara que no hallamos llegado al final if(i==(aux-1) && j >= (aux-1)){ //comprueba que estemos en el lugar adecuado, es decir ira imprimiento escaladamente if(i==0)// si es la primera fila ingresamos aux=1 matriz[i][j] = matriz[i][j]=aux; else matriz[i][j] = matriz[i][i1]*2;//ingresamos el valor correspondiente al ultimo de la "escala" *2 llenarMatriz(matriz, i , j+1); } else{ //si no, asignamos los valores anteriores de la escala if(j==0)// comprobamos si es el primer digito a ingresar matriz[i][j] = j+1; else matriz[i][j] = matriz[i1][j];// asignamos el mismo numero de la fila anterior (i-1) llenarMatriz(matriz, i, j+1); } } } public static void imprimir(){ //este metodo nos imprime la matriz por consola for(int i=0; i< matriz.length; i++){ for(int j=0; j< matriz.length; j++){ System.out.print(matriz[i][j] + " "); } System.out.print("\n"); } } }

Planteamiento: Ejercicio 15. Programar un algoritmo recursivo que ejecute la matriz del cubo mgico. Solucin:

Cdigo
void magico(int mat [] [], int fil, int colmedio, int c, int n) { if (c == n * n) { mat [n-1] [colmedio] = c; } else { if (fil < 0 && colmedio == n) { magico(mat, fil + 2, n - 1, c, n); } else { if (fil < 0) { magico(mat, n - 1, colmedio, c, n); } else { if (colmedio == n) { magico(mat, fil, 0, c, n); } else { if (mat [fil] [colmedio] == 0) { mat [fil] [colmedio] = c; magico(mat, fil - 1, colmedio + 1, c + 1, n); } else { magico(mat, fil + 2, colmedio - 1, c, n); } } } } } }

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

Cdigo
int menorvec (int x [], int n, int menor) { if (n == 0) if (menor > x [n]) return x [0]; else return menor; else if (menor > x [n]) return menorvec (x, n - 1, x [n]); else return menorvec (x, n - 1, menor); }

Planteamiento: Ejercicio 17. Programar un algoritmo recursivo que muestre el numero mayor de un vector. Solucin: Cdigo
int mayor (int numeros [], int posicion) { int aux; if (posicion == 0) return numeros [posicion]; else { aux = mayor (numeros, posicion - 1); if (numeros [posicion] > aux) return numeros [posicion]; else return mayor (numeros, posicion - 1); } }

Citar

Recursividad
1.1. Introduccin. El concepto de recursividad va ligado al de repeticin. Son recursivos aquellos algoritmos que, estando encapsulados dentro de una funcin, son llamados desde ella misma una y otra vez, en contraposicin a los algoritmos iterativos, que hacen uso de bucles while, do-while, for, etc. 1.2. Definicin. Algo es recursivo si se define en trminos de s mismo (cuando para definirse hace mencin a s mismo). Para que una definicin recursiva sea vlida, la referencia a s misma debe ser relativamente ms sencilla que el caso considerado. 1.3. Elementos de la Recursin 1.3. 1. Axioma

Es un caso donde el problema puede resolverse sin tener que hacer uso de una nueva llamada a s mismo. Evita la continuacin indefinida de las partes recursivas. 1.3.2. Formula recursiva Relaciona el resultado del algoritmo con resultados de casos ms simples. Se hacen nuevas llamadas a la funcin, pero estn ms prximas al caso base. Por ejemplo: El factorial de un nmero factorial(0) -> 1 factorial(1) -> 1*factorial(0) factorial(2) -> 2*factorial(1) factorial(3) -> 3*factorial (2) -> factorial(N) -> 3*factorial (N-1) En la resolucin de algoritmos recursivos es imprescindible encontrar estos dos elementos. 1.4. Tipos de recursin 1.4.1. Recursividad simple Aquella en cuya definicin slo aparece una llamada recursiva. Se puede transformar con facilidad en algoritmos iterativos. 1.4.2. Recursividad mltiple Se da cuando hay ms de una llamada a s misma dentro del cuerpo de la funcin, resultando ms difcil de hacer de forma iterativa. Un ejemplo tpico es la funcin de fibonacci 1.4.3. Recursividad anidada En algunos de los argumentos de la llamada recursiva hay una nueva llamada a s misma. La funcin de Ackermann se define por recursividad como sigue: 1.4.4. Recursividad cruzada o indirecta Son algoritmos donde una funcin provoca una llamada a s misma de forma indirecta, a travs de otras funciones. OHK

Ttulo: Re: Ejercicios Revursivos en Java y sus Soluciones Publicado por: ohk en 11 Octubre 2008, 03:47

Alguien se anima a resolver el ejercicio 14 ? OHK

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: Amerikano|Cls en 13 Noviembre 2008, 02:17 lo intentare hacer pero necesito tiempo, por que ando ocupado. amerikano

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: Amerikano|Cls en 27 Noviembre 2008, 22:30 Oye una recomendacin, el de fibonnaci no es conveniente hacerlo por recursividad, por lo siguiente, y es que las llamadas recursivas se dividen en dos lo cual conlleva a repetir un mismo proceso mas de dos veces y eso le resta velocidad y eficiencia :xD era solo eso jeje. salu2

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: Amerikano|Cls en 4 Diciembre 2008, 18:38 Cita de: ohk en 11 Octubre 2008, 03:19

Planteamiento: Ejercicio 14. Programar un algoritmo recursivo que permita resolver la siguiente matriz: 11111 12222 12444 12488 1 2 4 8 16 Solucin: Cdigo
No solucionado...

Bueno yo ya solucione el numero 14 jeje estaba facilito solo que no tenia tiempo de hacerlo, aca va: Cdigo
public class MatrizRecursividad { private static int a=0, aux=1, b=0; //Declaramos los datos necesarios private static int[][] matriz = new int[6][6]; //La matriz debe ser cuadrada public static void main(String[] args) { llenarMatriz(matriz, a, b); //Iniciamos el llamado recursivo imprimir(); //imprimimos la matriz } public static void llenarMatriz(int matriz[][], int i, int j){ if(j > matriz.length -1){ //Si lleg a la ultima coluna, reseteamos los datos para la siguiente i++; j=0; aux++; } if(i <matriz.length){ // compara que no hallamos llegado al final if(i==(aux-1) && j >= (aux-1)){ //comprueba que estemos en el lugar adecuado, es decir ira imprimiento escaladamente if(i==0)// si es la primera fila ingresamos aux=1 matriz[i][j] = matriz[i][j]=aux; else matriz[i][j] = matriz[i][i1]*2;//ingresamos el valor correspondiente al ultimo de la "escala" *2 llenarMatriz(matriz, i , j+1); } else{ //si no, asignamos los valores anteriores de la escala if(j==0)// comprobamos si es el primer digito a ingresar matriz[i][j] = j+1; else matriz[i][j] = matriz[i1][j];// asignamos el mismo numero de la fila anterior (i-1) llenarMatriz(matriz, i, j+1); } } }

public static void imprimir(){ //este metodo nos imprime la matriz por consola for(int i=0; i< matriz.length; i++){ for(int j=0; j< matriz.length; j++){ System.out.print(matriz[i][j] + " "); } System.out.print("\n"); } } }

Bueno cualquier duda comenten que pa eso estoy :xD. salu2 amerikano

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: ohk en 4 Diciembre 2008, 20:19 @AmeRiK@nO, tu ejercicio corre perfectamente, y el codigo no es dificil de interpretar, porque haces codigo limpio. Ahora mismo lo agrego tu ejercicio a el espacio que falta. Gracias por el aporte Un saludo

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: Amerikano|Cls en 5 Diciembre 2008, 01:49 jeje debes corregir esto: Cdigo
if(i==0)// si es la primera fila ingresamos aux=1 matriz[i][j] = matriz[i][j]=aux;

Vez, lo puse dos veces sin querer, ahora pon solo uno: Cdigo
if(i==0)// si es la primera fila ingresamos aux=1 matriz[i][j] =aux;

Se me col uno sin darme cuenta ;D, pero as y todo funcion :), solo era eso.

salu2

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: ohk en 5 Diciembre 2008, 03:18 Cita de: AmeRiK@nO en 5 Diciembre 2008, 01:49 jeje debes corregir esto: Cdigo
if(i==0)// si es la primera fila ingresamos aux=1 matriz[i][j] = matriz[i][j]=aux;

Vez, lo puse dos veces sin querer, ahora pon solo uno: Cdigo
if(i==0)// si es la primera fila ingresamos aux=1 matriz[i][j] =aux;

Se me col uno sin darme cuenta ;D, pero as y todo funcion :), solo era eso. salu2 :xD Da igual, ademas quien lo use se dara cuenta :rolleyes:

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: juancho77 en 7 Diciembre 2008, 01:35 De todos modos no tiene error, ni sintactico ni semantico. :P

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: pixzeto en 11 Junio 2009, 02:03 Estuve practicando con estos ejercicios y parece que el mtodo para invertir un nmero no funciona bien. Por ejemplo, si le entregamos el 32, dara: 2 + invertir(3)*10 = 2 + 3*10 = 32 Cdigo:
int invertir (int n) { if (n < 10) //caso base

return n; else return (n % 10) + invertir (n / 10) * 10; }

Pero lo hice as y funciona: Cdigo:


public int invertirNumero(int numero){ if(numero<10){ return numero; }else{ int contador = 0; int aux = numero; while(aux/10!=0){ contador++; aux = aux/10; } return (int)(Math.pow(10, contador))*(numero%10) + this.invertirNumero(numero/10); } }

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: Amerikano|Cls en 11 Junio 2009, 02:18 Aqui agrego unos mios: - Determinar si una palabra es Palndroma: Cdigo
public boolean palindroma(String palabra, int i, int j){ if(i != (palabra.length()/2)){ if(palabra.charAt(i) == palabra.charAt(j)) return palindroma(palabra, ++i, --j); else return false; } return true; }

- Sumar el borde de una matriz de enteros: Cdigo


public int sumaBorde(int i, int j){ if(i >matriz.length-1) return 0; else{ if(j > matriz.length-1 ){

j=0; i++; return sumaBorde(i,j); }else{ if((i==0) || (i==matriz.length -1) || (j==0) ||(j==matriz.length -1)) return matriz[i][j] + sumaBorde(i,j+1); } } return sumaBorde(i,j+1); }

Salu2

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: djrocha en 7 Julio 2009, 19:48 Buenas tardes: Me gustara conocer el cdigo de estos ejercicios implementndolo en ambiente grfico. Gracias.

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: VonN en 7 Julio 2009, 20:08 Es lo mismo. Son algoritmos, as que puedes implementarlos como funcin, y luego pasarle los parmetros correspondientes desde tus objetos. Un saludo

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: saintmauricioxd en 20 Abril 2010, 18:44 Cita de: pixzeto en 11 Junio 2009, 02:03 Estuve practicando con estos ejercicios y parece que el mtodo para invertir un nmero no funciona bien. Por ejemplo, si le entregamos el 32, dara: 2 + invertir(3)*10 = 2 + 3*10 = 32 Cdigo:
int invertir (int n) { if (n < 10) return n; else //caso base

return (n % 10) + invertir (n / 10) * 10; }

Pero lo hice as y funciona: Cdigo:


public int invertirNumero(int numero){ if(numero<10){ return numero; }else{ int contador = 0; int aux = numero; while(aux/10!=0){ contador++; aux = aux/10; } return (int)(Math.pow(10, contador))*(numero%10) + this.invertirNumero(numero/10); } }

Tu algoritmo no es recursivo, recordemos que la recursividad es una alternativa a la iteracion (los bucles for, while no deben usarse al implementar recursividad) pero vale el intento ;)

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: cibercito en 18 Junio 2010, 06:27 Cita de: saintmauricioxd en 20 Abril 2010, 18:44 Cita de: pixzeto en 11 Junio 2009, 02:03 Estuve practicando con estos ejercicios y parece que el mtodo para invertir un nmero no funciona bien. Por ejemplo, si le entregamos el 32, dara: 2 + invertir(3)*10 = 2 + 3*10 = 32 Cdigo:
int invertir (int n) { if (n < 10) //caso base return n; else return (n % 10) + invertir (n / 10) * 10; }

Pero lo hice as y funciona: Cdigo:


public int invertirNumero(int numero){ if(numero<10){ return numero; }else{

int contador = 0; int aux = numero; while(aux/10!=0){ contador++; aux = aux/10; } return (int)(Math.pow(10, contador))*(numero%10) + this.invertirNumero(numero/10); } }

Tu algoritmo no es recursivo, recordemos que la recursividad es una alternativa a la iteracion (los bucles for, while no deben usarse al implementar recursividad) pero vale el intento ;) Me gustaria una aclaracion sobre recursividad ,ya que sin ella discrepo contigo , porque considero que ese algoritmo si es recursivo por aplicarse el tambien cierto concepto de :" La recursividad simplemente significa aplicar una funcin como parte de la definicin de esa misma funcin. " . (yo lo entiendo como , si una funcion se llama dentro de su misma funcion = recursividad ) Entonces quisiera saber : si una funcion tiene n bucles PERO SE HACE RECURSIVIDAD (osea el concepto que yo manejo) , el algoritmo es recursivo o deja de serlo por tener n bucles ?.

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: Leo Gutirrez. en 18 Junio 2010, 21:09 Cita de: saintmauricioxd en 20 Abril 2010, 18:44 Cita de: pixzeto en 11 Junio 2009, 02:03 Estuve practicando con estos ejercicios y parece que el mtodo para invertir un nmero no funciona bien. Por ejemplo, si le entregamos el 32, dara: 2 + invertir(3)*10 = 2 + 3*10 = 32 Cdigo:
int invertir (int n) { if (n < 10) //caso base return n; else return (n % 10) + invertir (n / 10) * 10; }

Pero lo hice as y funciona: Cdigo:


public int invertirNumero(int numero){ if(numero<10){ return numero; }else{

int contador = 0; int aux = numero; while(aux/10!=0){ contador++; aux = aux/10; } return (int)(Math.pow(10, contador))*(numero%10) + this.invertirNumero(numero/10); } }

Tu algoritmo no es recursivo, recordemos que la recursividad es una alternativa a la iteracion (los bucles for, while no deben usarse al implementar recursividad) pero vale el intento ;) Mal, muy mal, los ciclos no tienen nada que ver con la recursividad, repasa tus apuntes. Y como prueba, observa algunos algoritmos recursivos, como la ordenacin quicksort. http://es.wikipedia.org/wiki/Quicksort

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: shigure-dark en 26 Agosto 2010, 06:50 estoy realizando un ejercicio donde ya realise un programa en el cual ingreso un numero positivo y este me genera la tabla de multiplicar hasta el 10 el asunto es que no tengo ni la mas minima idea de como hacer que este se vulva recursivo ya que en todas las veces que se comento en ninguna el programa esta echo como mi profesora me lo enseo.

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: espabe en 6 Octubre 2010, 06:44 Hola amigos! estoy llevando un curso de informatica pero yo soy un principiante en la materia. Quisiera saber como ustedes haran un programa con las siguientes normas: Implemente, tanto de forma recursiva como de forma iterativa, un mtodo que nos devuelva el mximo comn divisor de dos nmeros enteros utilizando el algoritmo de Euclides. ALGORITMO DE EUCLIDES Dados dos nmeros enteros positivos m y n, tal que m > n, para encontrar su mximo comn divisor (es decir, el mayor entero positivo que divide a ambos): a) Dividir m por n para obtener el resto r (0 <= r < n)

b) Si r = 0, el MCD es n. c) Si no, el mximo comn divisor es MCD(n,r).

Espero que me puedan ayudar, Gracias!!

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: Aeros en 16 Octubre 2010, 21:27 xDDDDDDD muestranos lo que tienes y te ayudaremops :D:D PD : tarea??

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: [L]ord [R]NA en 16 Octubre 2010, 22:43 Aqui no se hacen tareas... dejen de pedir eso.

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: pavelinhos en 26 Noviembre 2010, 21:35 Cita de: pixzeto en 11 Junio 2009, 02:03 Estuve practicando con estos ejercicios y parece que el mtodo para invertir un nmero no funciona bien. Por ejemplo, si le entregamos el 32, dara: 2 + invertir(3)*10 = 2 + 3*10 = 32 Cdigo:
int invertir (int n) { if (n < 10) //caso base return n; else return (n % 10) + invertir (n / 10) * 10; }

Pero lo hice as y funciona: Cdigo:


public int invertirNumero(int numero){ if(numero<10){ return numero; }else{ int contador = 0;

int aux = numero; while(aux/10!=0){ contador++; aux = aux/10; } return (int)(Math.pow(10, contador))*(numero%10) + this.invertirNumero(numero/10); } }

Aqui un aporte mio: Cdigo:


public String Invertir(int num){ if (num < 10) return String.valueOf(num); else return String.valueOf(num%10) + Invertir(num/10); }

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: criptofan en 4 Diciembre 2010, 20:11 Cita de: pavelinhos en 26 Noviembre 2010, 21:35 Aqui un aporte mio: Cdigo:
public String Invertir(int num){ if (num < 10) return String.valueOf(num); else return String.valueOf(num%10) + Invertir(num/10); }

Aunque ojo que ah se esta retornado un String y no un int como es pedido, claramente esto simplifica extremadamente el cdigo por que la suma de cadenas de caracteres simplemente se concatenan a diferencia de la suma de nmeros donde se deben elevar los dgitos a la potencia respectiva para lograr invertir el nmero. De todas maneras, me gusto mucho tu implementacin :) Agrego otra implementacin: public static int invertir(int n) { if(n/10==0) return n; else { String s=String.valueOf(n); int aux=n; int contador=s.length(); while(aux%10!=0) {

contador--; break; } return (int) ((n%10)*Math.pow(10, contador)+invertir(n/10)); } }

Saludos

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: pavelinhos en 14 Diciembre 2010, 23:06 Cita de: criptofan en 4 Diciembre 2010, 20:11 Aunque ojo que ah se esta retornado un String y no un int como es pedido, claramente esto simplifica extremadamente el cdigo por que la suma de cadenas de caracteres simplemente se concatenan a diferencia de la suma de nmeros donde se deben elevar los dgitos a la potencia respectiva para lograr invertir el nmero. De todas maneras, me gusto mucho tu implementacin :) Saludos Otra manera seria, convertir el String en un int luego de invertir: Cdigo
public int Invertir(int num){ String r; if (num < 10) r= String.valueOf(num); else r= String.valueOf(num%10) + Invertir(num/10); return Integer.parseInt(r); }

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: hecter en 10 Febrero 2011, 20:20 Esta funcion utilizando la misma logica de recursividad de la idea original funciona FUNCTION invertir(n INTEGER) RETURN INTEGER deterministic AS vnumDig integer; vnuParEntera pls_integer; BEGIN vnuParEntera := trunc(n, 0); vnumDig := fnugetNumOfDig(vnuParEntera);--esta es una funcion que me obtiene el numero de digito if vnumDig = 1 then

return vnuParEntera; end if; return(vnuParEntera mod 10) * Power(10, vnumDig - 1) + invertir(vnuParEntera / 10); END invertir;

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: hecter en 10 Febrero 2011, 20:21 FUNCTION invertir(n INTEGER) RETURN INTEGER deterministic AS vnumDig integer; vnuParEntera pls_integer; BEGIN vnuParEntera := trunc(n, 0); vnumDig := fnugetNumOfDig(vnuParEntera);--esta es una funcion que me obtiene el numero de digito if vnumDig = 1 then return vnuParEntera; end if; return(vnuParEntera mod 10) * Power(10, vnumDig - 1) + invertir(vnuParEntera / 10); END invertir;

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: steven17 en 23 Febrero 2011, 19:52 Como haria yo para implementar una funcin de recursividad para copiar arreglos hasta llenar la memoria. Es que ocupo crear un programa que cree un arreglo que se llene con mil numeros enteros y despues que haga copias de ese arreglo hasta caer en fallos de memoria

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: bjpenn en 22 Marzo 2011, 23:54 aki les mando el metodo invertir en forma recursiva public int invertir(int n){ int res=0; if(n<10){ res=n; } else{ res=(n % 10)*(int)Math.pow(10, cantDigitos(n)-1) + invertir(n / 10); }

return res; }

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: bjpenn en 23 Marzo 2011, 00:04 estuve revisando los metodos realizados en esta pagina y en la mayoria de los metodos vi un error que no es tan error este es mi consejo y tomenlo del lado positivo vale utilizan mucho el return y lo aconsejable es que solo se invoke el return solo una 1 ves bye y viva la ufc

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: bjpenn en 25 Marzo 2011, 21:50 hola a todos bueno aki les dejo un programita que les sirva de mucho lo interesante de este metodo es que hace 3 veces la llamada recursiva 1 21 321 4321 54321 654321 asi sucecivamente public int triangulo(int n){ int res=0; if(n==1){ res=1; } else{ res=(int)Math.pow(10,cantDigitos(triangulo(n-1) ))*n+triangulo(n-1); } return res; }

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: AleX Inc. en 20 Abril 2011, 07:51 Me dejaron de tarea el ejercicio 13, que coincidencia :P

Aqui lo dejo por si les sirve de algo ver otra manera de resolver el cuadro latino, yo use menos parametros. PD: Adjunto la api para que lo prueben. Cdigo:
public void cLatino(int[][]mt, int fila, int col) { if ( (fila+col+1)==mt.length ) mt[fila][col] = 1; else if ( (fila+col)>=mt.length ) mt[fila][col] = (fila+col+2)-mt.length; if ( col<mt.length-1 ) else if ( fila<mt.length-1 else return; cLatino(mt,fila,col); } public void Latino(int[][]Mt) { cLatino(Mt,0,0); } col++; ) { fila++; col=0; }

Api: http://upwap.ru/1455317 (http://upwap.ru/1455317)

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: alfred_223315 en 5 Mayo 2011, 04:30 Hola haber si alguien me puede ayudar nesesito este algoritmo (multiplicacion de matrices) en forma recursiva... void ingreso(int m[][30],int f,int c){ for(int i=0;i<f;i++){ for(int j=0;j<c;j++){ cout<<"Valor ["<<(i+1)<<"]["<<(j+1)<<"]= "; cin>>m[j]; } } } void mostrar(int m[][30],int f, int c){ for(int i=0;i<f;i++){ for(int j=0;j<c;j++){ cout<<"Valor ["<<(i+1)<<"]["<<(j+1)<<"]= "; cout<<m[j]<<endl; } } } void multiplica(int m1[][30],int m2[][30],int p[][30],int f1,int c1,int f2,int c2){

for(int i=0;i<f1;i++){ for(int j=0;j<c2;j++){ for(int k=0;k<c1;k++){ p[j]=p[j]+(m1[k])*(m2[k][j]); } } } cout<<"\n\n\t\tEL PRODUCTO DE VECTORES ES\n\n"; mostrar(p,f1,c2); } void inicializaValoresEnCero(int p[][30],int f,int c){ for(int i=0;i<f;i++){ for(int j=0;j<c;j++){ p[j]=0; } } } int main(){ int M1[30][30],M2[30][30],P[30][30],f1,c1,f2,c2; cout<<"\n\tPrimera Matriz"<<endl; do{ cout<<"Ingrese el numero de filas "; cin>>f1; }while(f1<1||f1>30); do{ cout<<"Ingrese el numero de columnas "; cin>>c1; }while(c1<1||c1>30); ingreso(M1,f1,c1); cout<<"\n\tSegunda Matriz"<<endl; do{ cout<<"Ingrese el numero de filas "; cin>>f2; }while(f2<1||f2>30); do{ cout<<"Ingrese el numero de columnas "; cin>>c2; }while(c2<1||c2>30); ingreso(M2,f2,c2); if(c1==f2){ cout<<"Se puede multiplicar"<<endl;

inicializaValoresEnCero(P,f1,c2); multiplica(M1,M2,P,f1,c1,f2,c2); } else cout<<"NO Se puede multiplicar"<<endl; system("pause"); return 0; }

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: Berrinche en 9 Mayo 2011, 02:39 Me gustara saber como hacer un mtodo recursivo que reciba un nmero entero binario y devuelva el nmero entero decimal equivalente. Y tambin como hacer un mtodo recursivo que reciba un nmero entero decimal y devuelva una cadena con el nmero equivalente hexadecimal. No tengo idea ni de como comenzar. LBN

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: owfei en 10 Mayo 2011, 08:13 En c++ resolvi el de invertir de sta manera: Cdigo
#include <math.h> int inv(int n){ if(n <= 9) return n; else return inv(n/10) + inv(n%10)*pow(10, n%10-1); }

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: Mr.Shak en 11 Mayo 2011, 18:02 hola a todos: Estoy haciendo un curso de java, en el cual tengo que utilizar una funcin recursiva, o pongo en antecedentes: Estamos creando un multicine, para comprar entradas y demas. El problema viene a la hora de reservar asientos, los cuales puedes ser consecutivos (si tenemos

suerte) o no ( que es mi caso). La historia es que si un cliente va a comprar 5 entradas al cine, y no tienen 5 entradas correlativas en la fila que quiera dicho cliente, los he de re-ubicar en otra zona del cine y en el peor de los casos en el que no haya por ningun lado 5 asientos consecutivos, pues por ejemplo ponerlos 3 en una fila y 2 en la siguiente justo delante , y sino de la manera en la que puedan estar mas cerca unos de otros. No voy a decir que me resolvais el codigo, evidentemente, pero la verdad es que no tengo ni p**a idea de como hacerlo. Necesito ayuda de cualquier tipo. Muchas gracias

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: trueno_dp en 15 Junio 2011, 20:20 Hola, necesito sacar de forma recursiva los divisores de un numero, tengo la iterativa, pero ni en broma consiga la recursiva. graciaas public static int recursividad(int numero){ if(numero>2) { return 0; }else {

return recursividad(numero%numero-1); } }

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: TheKaleb32 en 16 Junio 2011, 06:08 /* Aqui esta una opcion de como se pueden generar con recursividad el ejercicio de invertir un numero.. Se regresa un String, y para solucionar el problema de imprimir ceros innecesarios al inicio o final del String, ocupo un contador y una condicin extra..! **/ public static void main(String[] args) {

System.out.println( invertir ( 1230456 ) ); }// cierro metodo main public static String invertir( int a, int b) { int c = ++b; if( a % 10 == 0 && c - 1 == 0){ return ( "" + invertir( ( a / 10 ) , c - 1 )); }else{ if ( a == 0 ) return ""; else return ( ( a % 10 ) + invertir( ( a / 10 ) , c ) ); } }//cierro metodo invertir

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones Publicado por: primoxhero en 21 Junio 2011, 23:25 por favor ME PUEDEN AYUDAR EN ESTA sumatoria EJERCICIO es la siguiente: X^1/1!+X^2/2!+X^N/N!

Ttulo: Ejercicios Recursivos en Java y sus Soluciones-->>Invertir o Numero Recursivos Publicado por: Skarlo en 1 Diciembre 2011, 03:36 String pal=JOptionPane.showInputDialog("Introduce la palabra"); JOptionPane.showMessageDialog(null, palabra(pal,pal.length(),"Su invertido es: ")); } static String palabra(String c, int inv, String tama) { inv=inv-1; if(inv>=0) { tama=tama+c.charAt(inv); return palabra(c,inv,tama); } else return tama; }

Ttulo: Re: Ejercicios Recursivos en Java y sus Soluciones

Publicado por: ato2112 en 4 Diciembre 2011, 23:13 sin while/for/etc. public int invertir(int n){ String aux=Integer.toString(n); if (n<10) return n; else return (int) ((n%10)*Math.pow(10, aux.length()-1)+invertir(n/10)); }

Potrebbero piacerti anche