Ejercicios Java - Recursividad #1 - Factorial y suma de números
Vložit
- čas přidán 10. 08. 2016
- - ¿Necesitas que sea tu tutor personal? www.discoduroderoer.es/tutori...
- Consigue cupones de descuento de mis cursos de udemy: cupones.discoduroderoer.es/#/...
- Sigue mis próximos eventos: eventos.discoduroderoer.es
- Visita nuestra web: www.discoduroderoer.es/
- ¿Necesitas un servidor de calidad? Webempresa te lo da. clientes.webempresa.com/europ...
- ¿Quieres seguir nuestros trabajos? Visita nuestro github. github.com/DiscoDurodeRoer
- ¡Sé nuestro patrón! / discoduroderoer
- Síguenos en las redes sociales:
- Facebook: goo.gl/JcLshS
- Twitter: goo.gl/MU2Gbo
- Google+: goo.gl/8U8aXt
- CZcams: goo.gl/5vjkGP o suscribete
- Discord: / discord
- Twitch: / discoduroderoer_prog
- Si quieres contactar con nosotros para alguna consulta o enviarnos ejercicios: administrador@discoduroderoer.es
- Enunciado:
1. Sumar los números números naturales hasta N (se lo damos nosotros) de forma recursiva.
2. Factorial de un número.
- Descarga de los proyectos y enunciados: github.com/DiscoDurodeRoer/ej...
- Recopilación de descargas de los videos de youtube: www.discoduroderoer.es/descar...
La verdad es que eres un gran maestro man! haces que los temas complicados sean fáciles, gracias por todo man :D
Increíble, lo entendi muy facilmente, para los que no lo entiendan les recomiendo hacer los ejercicios en una e ir repasando paso por paso
Muy bueno, justo me estaba peleando con entender el concepto y con tu vídeo me quedó muy claro
muchas gracias, tengo examen en unos dias sobre esto y con el video me quedo todo claro
Muchas gracias!!! ahora sí lo entendí!
Tenéis una manera simpática de enseñar andáis primeramente por las ramas, pero al final se entendió y eso se agradece.
Gracias!!! intentamos hacerlo lo mejor posible.
eres increíble, eres a la única persona que le he entendido el tema de la recursividad, muchísimas gracias.
Gracias!
Gracias compa, me sirvio mucho, saludos.
Excelente explicación, muchas gracias!!
Es muy cierto lo que dice, en relación al primer ejercicio. Cuando llega a la función sumaRecursiva(1), es cuando desencadena todos los demás resultados que han quedado en espera, ya que se empiezan a desbloquear uno por uno, aquí les comparto lo que va sucediendo.
//sumaRecursiva(9)=9 + sumaRecursiva(8)
//sumaRecursiva(8)=8 + sumaRecursiva(7)
//sumaRecursiva(7)=7 + sumaRecursiva(6)
//sumaRecursiva(6)=6 + sumaRecursiva(5)
//sumaRecursiva(5)=5 + sumaRecursiva(4)
//sumaRecursiva(4)=4 + sumaRecursiva(3)
//sumaRecursiva(3)=3 + sumaRecursiva(2)
//sumaRecursiva(2)=2 + sumaRecursiva(1) = 3
Como verán, cuando llega a la sumaRecursiva(1), se llega al primer resultado, y gracias a eso, se conoce que la función de sumaRecursiva(2)= tiene un valor de 3, y así se puede conocer el valor pendiente de la sumaRecursiva(3), y así seguir escalando, hasta el resultado final, por eso lo que finalmente retorna es res = n +sumaRecursiva(n-1) = 45
//sumaRecursiva(9)=9 + sumaRecursiva(8) = 45
//sumaRecursiva(8)=8 + sumaRecursiva(7) = 36
//sumaRecursiva(7)=7 + sumaRecursiva(6) = 28
//sumaRecursiva(6)=6 + sumaRecursiva(5) = 21
//sumaRecursiva(5)=5 + sumaRecursiva(4) = 15
//sumaRecursiva(4)=4 + sumaRecursiva(3) = 10
//sumaRecursiva(3)=3 + sumaRecursiva(2) = 6
//sumaRecursiva(2)=2 + sumaRecursiva(1) = 3
Gracias por tu aporte!!
Bien hecho!
Gracias Romulo, me alegro que estes aprendiendo de recursividad, estas en un buen canal.
Gracias! pude comprender mejor el ruteo :)
GRACIAS PANA ME AYUDO MUCHO
Muchas gracias por el vídeo, ahora sí que lo entendí bien :)
excelente gracias a ti pude entender facilmente la recursividad. muchas gracias...otro suscriptor
Gracias!
Buen video. Así da gusto aprender
Buen video, bien explicado
Ayuda mucho, es la misma sintaxis para todos los lenguajes, solo cambia algunas cosas. Gracias.
Gracias por el vídeo.
lo que necesitaba antes de un parcial, gracias fachita
Me acabas de salvar la vida.
Gracias paarce me ayudo demasiado
La mejor manera de aprender la recursividad es usando el debugger y analizar cada caso
que buenos videos que tenes amigo!! geniooo
Gracias! De recursividad tienes unos cuantos para ver!
sisi los voy a ver a todos, era muy dificil entender y nadie lo explica muy detallado como ustes!! exitos
Muy Buena Explicación, solo creo que return 1;//Significa las veces que regresara el resultado de la variable en si misma.. por ejemplo factorial de 2 con Uno de return= (2) y con Dos de return=(4)..
que buen video...!!!!
buenisimo
Gracias
Super!! tu vídeo me ha servido para estudiar éste tema.
Saludos desde Colombia.
Hola,me encanta este canal!!!! es una pasada!!!! ,me pregunto que si podriás hacer el ejercicio del algoritmo de ddijkstra de forma recursiva???
Gracias! Mirare de como hacerlo
masomenos le entendi pero podrias explicar somo algo la suma de números posteriores ejemplo;
el usuario coloca 5 y va sumar los 10 números posteriores con el (como hago eso )
Porque cuando entra en el if pones un return 1? Ese 1 no puede ser que altere el resultado final?
Genial
Me gusto como enseñaste recursividad.
Yo hice los problemas antes de ver tú vídeo y los hice de una manera simplificada, los comparto, les puede interesar.
public static int SumaNaturalesR(int n){
return (n
Gracias por tu aportación!!
Podrias explicarme tu codigo ?, no entendio el "?" Y el "n: n+" como el "1:n*"
Y del factorial en caso de cero caso base 0? Como lo implementarias?
Hola buenas! Me encantaría saber por qué inicializas la variable como n=5 y en la recursividad en vez de poner n pones numero. Muchas gracias de antemano!
porque no tienen porque llamarse igual, estoy llamando a una funcion, dentro de la función el valor de n pasa a numero, es como si al principio hiciera numero = n;
Espero que te sea de ayuda.
Vale muchas gracias! Y si tengo 2 variables los tendría que poner en orden en el main y en el recursivo verdad?
Depende de lo que quieras hacer, el orden es un poco indiferente
que guapo!
Sabes como hacer para eliminar la primera letra de cada palabra de una cadena usand recursion ?ayuda...
Este video esta bien para alguien que sabe porque básicamente no me estoy enterando de nada parece que soy tu compañero de oficina
Gracias por el vídeo, una consulta como que ya empiezo entender un poco este tema,pero me es necesario saber si recursividad más o menos es como decir un acumulador?
realmente es como hacer un for pero sin un for.
@@DiscoDurodeRoer gracias por la respuesta
Joder tio gracias
hola saludos!
hola tengo una duda...
, entendí que la recursividad, es cuando se llama un método dentro de si, y cuando es implementada, por ejemplo en el factorial de 5, se realizan las restas y cuando esas restas lleguen a 1, osea el caso base, se regresara , esta vez multiplicando hacia atras, y el que devuelve realmente el resultado es el 5?
No exactamente, lo hace es llamarse a si mismo y cada vez que se llama es con un parametro diferente, lo que hace es que hasta que no termine esa parte que se llama asi misma no sigue en la parte de la funcion con el parametro 5.
Espero que te haya ayudado
Muy bueno tu vídeo.. me ayudo mucho..
Solo tengo una duda, si yo quisiera meter el numero, osea que no este predeterminado en la linea de código, si no que al momento de correr el programa me de una opción de yo poder meter el numero que yo quiera evaluar...
Pidelo en el main
DiscoDurodeRoer
Muchas gracias..
Siempre te estaré molestando
Fan de tu pelo
No se le ha entendido completa y correctamente, suena como si estuviera en estado etílico
¿Eres español?
if (n==0) {return 1;}
else {return x*potencia(x, n-1);
Tengo una consulta, como podría desplegarlo en pantalla de esta forma?
4=4+3+2+1=10
Si mañana apruebo mi examen, me suscribo y te dejo tu merecidísimo like
Esperemos k si!!
Alguien sabe como se llama el software donde esta programando esto ?
Netbeans
¿Porque puede dar error si ponemos sumaRecursiva(numero--) 9:16 ?
+Hector Angel Lujan Lugos porque primero llama a la funcion y el valor del numero no se modifica y es como si hicieras la misma llamada
el menos 1 de ahi hace que vuelca si lo saquase sale el error
Estaba buscando un vídeo que explicara bien la recursividad y, joder, este es xD
Buen vídeo!
Por cierto, el teclado suena genial. Cuál es? Porque supongo que los switches son blue.
Es el razer ultimate balckwidow, aqui tienes el video.
czcams.com/video/Q-qMsv-Q5wU/video.html
Donde estan los manuales?
Porque cuando pido el factorial de 15 el resultado es 2004310016? no debería ser : 1.307.674.368.000 ??
de hecho muestra el factorial correcto hasta el número 12, de ahí en adelante devuelve resultados diferentes
esta super bueno pero lo que no entendi es lo del return 1 ; porque si cuando llege a 1 retorna el 1 porque me da la respuesta 45 no se si me explico con esto jaaj :c
Nembe, tengo que hacer esa chingadera en negativo, en positivo y aparte también tengo que hacer la serie para ambos casos PRIMER SEMESTRE Y YA ME COLAPSE
Ayuda
Por favor ::((
no funciona el link de descarga!
Si funciona, lo acabo de descargar, pruebalo de nuevo
tome su like buen hombre... :'v
Y yo lo recibo encantado ;)
programa que introduzca un número y muestre todas las sumas posibles de ese numero en java (con suma de recursividad)
Lo que pides se llama backtracking, es algo un pelin mas complicado, es como recursividad avanzada. Veremos que podemos hacer.
Ya tienes ejercicios de backtracking en el canal.
Sigo con la duda de porque se suma el 1 al final, en la suma de números :(
¿como hacer que un programa imprima todas las posibles descomposiciones de un numero natural como suma de números menores que el?
Puedes poner algun ejemplo?
1=1
2=1+1
3=2+1
3=1+1+1
4=2+1+1
4=1+1+1+1
4=2+2
N=(n-1)+1
N=(n-2)+2=(n-2)+1+1
todo eso es el ejemplo
no le entiendo como le puedo hacer eso
Lo que me comentas tiene pinta de ser un backtracking
Si en el factorial se pone la condicion del if (numero
Interesante, me lo apunto!
y te daría 0 porque 0 por cualquier cosa sigue siendo 0, en ese caso mejor una constante = 0
Este es un buen canal pero siempre todos los videos se escuchan bajo o son icreiblemente largos jaja
Son los primeros vídeos
la "otra" se queda esperando, jaja
Hola hermano muy buen vídeo mejor que las explicaciones de mi profesor, solo que me quedo una duda con el primer ejercicio, ya lo transcribí ya incluso le coloqué el Scanner para darle yo mismo el valor, pero no entiendo muy bien el cómo en el main utilizas n y en la función recursiva utiliza numero, no me queda claro la verdad como se relacionan, si pudieras explicar eso te lo agradecería. Un sludo.
Facil, no tienen k llamarse igual java mira el tipo de la variable no el nombre en si
Si no se prueba... puede que funcione, puede que no. Cosas del directo que de no probarse no se comprueban
Suena muy Rajoy, ¿funciona algo mal?
Mas bien suena a Pablo Iglesias, quejarse por quejarse. Cuestión de procedimiento.
no logro entender tanto. pero gracias
Coméntanos tus dudas, ¿Qué no entiendes exactamente?
Estamos para ayudarte
Porque en algunos casos no es necesario el caso baso base. Por ejemplo cuando ago un recursivo que me imprima 20,19,18,17,16,15,14........1. No se si me entienden .. Y no logro entender muy bien
¿Puedes escribirnos tu codigo? Puedes que sea iterativo y no recursivo
El factorial no es correcto, en el if falta añadir || numero==0 porque el 0! = 1
Pues tienes razón se me olvido el cero por completo, lo modificaré en el código. ¡Gracias!
AYUDAAAAAAAAAAAAAAAAAAAAAAAA, Pls
Implementar una clase para ingresar numeros enteros. Por cada número ingresado, el usuario podrá hacer clic en el botón “Mostrar factorial” y ver el resultado en un TextArea.
el factorial de 0 no habría que ponerlo también con un numero == 1 || numero == 0
yo te entendí, así que gracias. Para los que no aquí tienen un link
czcams.com/video/mDuhLwnqKqY/video.html
no lo se por que ni logró comprender la recursividad
Poco a poco amigo, esto no sé aprende solo viendo vídeos, también necesitas practicarlos y sobre todo paciencia.
Es normal que te cueste, a mi también me costo en su dia.
¡animo!
DiscoDurodeRoer GRACIAS AMIGO POR TU APOYO saludos desde ECUADOR.
Se desea programar un método recursivo que ingresado una letra y un número imprimir una cadena con las subsiguientes letras del abecedario separadas por guiones Ejemplo:
ingreso la letra "r" y el numero "3"
RESULTADO: r-rs-rst
aqui la idea seria usar un char y un numero como parametro
DiscoDurodeRoer ¿también se podría usar un contador?
Para sumar necesitas dos números, y tú solo estás pasando un parámetro. No estás sumando. Solo reconstruyendo el parámetro inicial; con un método increíblemente ineficiente.
Como das el programa por bueno sin probarlo ni una sola vez, todo va de maravilla, claro.
Ah, no. Haces un sumatorio de 1 a N, donde N es el parámetro. Pues llámalo "sumatorio", no "suma". Y explica lo que estás haciendo, y prueba el programa para que podamos verlo.
Perdona, se me pasaria en su dia, puedes probarlo tu mismo. Saludos
@@DiscoDurodeRoer Sí. Pero tú ya tienes el programa en el IDE. Puedes probarlo en uno o dos minutos. Y les ahorras un buen tiempo de copiar código a los 30.000 visitantes que miran el vídeo. Saludos.
Tienes razon, lo tendre en cuenta en posteriores, saludos
amigo como te cuesta escribir, es algo increíble, que te pasa?
No se dejen engañar por gente que solo graba videos por grabar. El tipo no es ingeniero en software ni tiene una formación universitaria es evidente.
¿Porque debería tener formación universitaria? ¿Eso haría que fuera mejor? Madre mía
primero plantea el ejercicio luego lo resuelves, así parece que estas improvisando y no se sabe a donde vas.
no te entendi un crj
Tio que mal explicas, este es el primer video que veo tuyo y creo que no miro ningun otro...
Pues no mires mas
este tema me super caga
hablas mucho y da la sensación de que no tienes ni idea
comparto la suma recursiva en java logre comprender algunos puntos
/**
*
* @author YEISON
*/
public class SumaDeNumero {
public static void main(String[] args) {
//numero a sumar recursivamente
System.out.println(sumaRecursiva(5));
}
public static int sumaRecursiva(int num) {
if (num == 1) {
return 1;
} else {
return num+sumaRecursiva(num - 1);
}
}
}
parcero la memoria no quedaría pesada usando una variable extra? o no necesariamente