EJERCICIOS EN POO Y RECURSIVIDAD EN JAVA
aka les dejo para que lo analicen estos codigos de recursividad
se trata de recursividad por la forma de deduccion
public int cancer(int n){
int res=0;
if(n==1){
res=1;
}
else{
res=n+cancer(n-1);
}
return res;
}
public int cancer(int n ){
int res=0;
while(n>0){
res=res+n;
n=n-1;
}
return res;
}
public int cancer2(int n){
int res=0;
if(n==1){
res=1;
}
else{
res=cancer2(n-1)+n+n-1;
}
return res;
}
espero que les aya interesado
si no entienden me preguntan sus dudas porfa
o mas bien poner algun metodo aca en este tema y asi colaborarnos entre colegas
jajaj bye y suerte
La función cancer devuelve una suma, cuyos resultados a medida que el "n" va "creciendo" sigue el orden ascendente de los naturales.
Digo:
0 -> 0
1 -> 1
2 -> 3
3 -> 6
4 -> 10
Entre 0 y 1 la diferencia es 1, entre 1 y 2 la diferencia es 2, entre 2 y 3 la diferencia es 3 y así sucesivamente...
bueno yo ota vez les dejo aka dos ejercicios mas solo para novatos por faaaaaa
public int divisorCociente(int n, int div){
// devuelve el cociente de una division
int res=0;
if(n< div){
res=0;
}
else{
res=divisorCociente(n-div, div)+1;
}
return res;
}
public int residuo(int n, int div){
//devuelve el residuo de una division
int res=0;
if(n<div){
res=n;
}
else{
res=residuo(n-div,div);
}
return res;
}
si te caes alguna ves y piensas que estas acabado pues lo estas y si no que esperas para levantarte "animo"
public int elevado(int a,int b ){
// devuelve el resultado de "a" a la potencia b sin
// utilizar la potencia
int res=0;
if(b==0){
res=1;
}
else{
res= elevado(a,b-1)*a;
}
return res;
}
public int multiplicar(int a, int b){
int res=0;
if(a==0 || b==0){
res=0;
}
else{
res=multiplicar(a,b-1)+a;
// ojo en "+a" eso es lo que agarra cada ves que vuelve al metodo
}
return res;
}
bueno aka yo devuelta para responder todas sus dudas de solo novatos
bye bye
Quizás se pueda suplir con esto, no entiendo, ¿Para que haces esto?
public static int sPoW( Integer num, Integer exp )
{
/*
* Funcion que devuelve la
* potencia de un numero,
* sin usar la libreria Math.
*/
Integer sReturn = 1;
if( exp == 0 ){ return 1; }
for(Integer i=0; i<exp; i++){ sReturn *= num; }
return sReturn;
}
hola a todos de nuevo
espero que leas esto Shell Root buenoo lo que pude observar en el codigo que enviaste es un codigo de programacion POO mientras que el codigo que yo utilizo es netamente RECURSIVIDAD y la recursividad tiene dos formas de hacerlas
la forma 1 es deduccion y la 2 es induccion
pero me gusto mucho tu codigo es muy bueno espero que me hayas entendido bye bye
bueno aky hayyyyy mas ejerccios
public int cantDigPares(int n){
int res=0;
if(n<10 && n==2 || n==4 || n==6||n==8){
res=1;
}
else if((n%10)%2==0){
res= cantDigPares(n/10)+1;
}
else{
res= cantDigPares(n/10);
}
return res;
}
Bueno antes que nada gracias ahora empiezo a comprender mejor, lo que es la recursividad.
Ultimamente nos han pedido trabajos usando recursividad, pero como para mi no la entendia lo hacia sin ser recursivo y pues los programas me han andado y todo, entonces a lo que viene mi pregunta ¿En que casos es bueno usar la recursividad?, ya que para mi es mucho mas sencillo hacerlo sin ser recursivo puesto que nose muy bien manejarlo, y aun asi he tenido mejor trabajo sin ello y pues aveces me pongo a pensar de que me sirve la recursividad, ya que pocas veces la he usado, ahi si me podrias hechar una mano en ello gracias n_n, asi como Shell Root la mayoria de mis codes los hago de esa forma jeje.
Sayo*! n_n
P.D. Para mi no importa que sea recursivo o no, simplemente con que mi programa cumpla de forma efectiva su objetivo con ello me doy mas que satisfecho, pero tambien deseo saber el porque usar recursividad y en que casos jeje
hola disculpa el retraso de mi respuesta es que ultimamente estoy sin tiempo
bueno yo tambien soy estudiante de informatica
mi punto de vista sobre la recursividad es que ocupa mucho tiempo en memoria
pero es otro modo muy interesante de programar y aveces es mucho mas sencillo
por ejemplo:
en un codigo de POO tienes que hacer muchas restricciones para un problema mientras en recursividad solo lo deduces (supones que funcionara) y funciona
la proxima semana pondre mas ejercicios de las cuales seran en POO y los mismos en recursividad y ahi veras que aveces en mejor pero vuelvo a repetir no es muy economico en memoria bye bye hasta la proxima'''''''''
y gracias por tu comentario...........
wow gracias n_n, espero ver los otros ejercicios, aunque ahora empiezo a entender mejor lo que es la recursividad aunque si fue algo que empece a ver que el llamarse a si mismo seria mas memoria como lo que vendria siendo en unos textos que lei sobre en linux el overflow usando fork.
public int hexagono (int n){
int res;
if (n==1) res=6;
else
res=hexagono(n-1)+6*(3*n-2);
return res;
}
espero que les sirva valeeeee bye bye
aqui va uno mas
public int cubito(int n){
int res;
if(n==1){
res=1;
}
else{
res= cubito(n-1)+(3*n*(n-1))+1;
}
return res;
}
publiquen ustedes igual cualquier metodo interesante
y asi nos ayudamos entre colegas vale bye
public int cantDigImpares(int n){
int res=0;
if(n<10 && n==3 || n==5 || n==7|| n==9){
res=1;
}
else{
res=cantDigitos(n)-cantDigPares(n);
}
return res;
}
bueno diganme sus dudas porfa sin miedo jajaja
bye bye ;-) :rolleyes: >:D :laugh: :laugh: :laugh: :laugh:
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;
}
Citarmi punto de vista sobre la recursividad es que ocupa mucho tiempo en memoria
Esto depende de la profundidad que adquiera la recursividad y como se vayan guardando los datos en el stack... Si hablamos de una estructura con pocos elementos no hay problema, ahora, si hablamos de una gran estructura de datos, ahí es otra cosa...
wauuu les aconsejo que practiquen a programar en juez UVA
:rolleyes: :( :o >:D ;-) :laugh: :silbar: ;-) :xD :o
public int cancer(int n ){
int res=0;
while(n>0){
res=res+n;
n=n-1;
}
return res;
}
[/color]
posteen mas ejercicios!!!
este foro se esta yendo de bajada!!! k hacer para mejorarlo???
Cita de: bjpenn en 13 Febrero 2012, 02:23 AM
este foro se esta yendo de bajada!!! k hacer para mejorarlo???
Cierto en el foro de Java nunca ha habido una actividad muy fluida a comparación de otros SubForos, en todo caso dejo este, no es muy dificil:
*Listar el contenido de un directorio incluyendo todos los subdirectorios y los contenidos de estos, lo que formalmente seria "listar recursivamente" los contenidos de un directorio.
Saludos
Cita de: RyogiShiki en 13 Febrero 2012, 02:33 AM
Cierto en el foro de Java nunca ha habido una actividad muy fluida a comparación de otros SubForos, en todo caso dejo este, no es muy dificil:
*Listar el contenido de un directorio incluyendo todos los subdirectorios y los contenidos de estos, lo que formalmente seria "listar recursivamente" los contenidos de un directorio.
Saludos
el ejercicio que posteaste es netamente bash!!!
Cita de: bjpenn en 13 Febrero 2012, 16:17 PM
el ejercicio que posteaste es netamente bash!!!
Claro que no XD se puede resolver prácticamente en cualquier lenguaje de programación!
Cita de: RyogiShiki en 13 Febrero 2012, 16:37 PM
Claro que no XD se puede resolver prácticamente en cualquier lenguaje de programación!
interesante aver demuestranos y aprenderemos
gracias por la colaboracion...
claro, yo lo haría de la siguiente manera:
package recursivedirlist;
import java.io.File;
public class RecursiveDirList {
public static void main(String[] args) {
listFiles(args[0]);
}
public static void listFiles(String path) {
File rootFolder = new File(path);
if (rootFolder.isDirectory()) {
File[] files = rootFolder.listFiles();
if (files != null) {
for (File file : files) {
System.out.println("Archivo: " + file.getName());
if (file.isDirectory()) {
System.out.println("Entrando al directorio: " + file.getName());
listFiles(file.getAbsolutePath());
}
}
}
} else {
System.out.println("No es un directorio, intenta nuevamente...");
}
}
}
La forma de usarlo sería:
java RecursiveDirList /path/al/directorio
o
java -jar RecursiveDirList.jar /path/al/directorio
Si alguien tiene una forma más sencilla bienvenida es.
Saludos
A mi me encantaria que me ayudaras con un metodo en java que me ordene 3 numeros ingresados de mayor a menor pero de la formas mas recursiva posible ! =D