¿Qué es la recursividad?
Comprende de una vez qué es la recursividad
Publicado el 19.11.2022 a las 21:45
La conjetura de Collatz dice que elijas el número natural que eligas siempre llegarás a 1 siguiendo estas dos fáciles reglas:
Al resultado obtenido le vuelves a aplicar las mismas reglas y al final llegarás a un blucle infinto de 4, 2, 1, 4, 2, 1...
¿No me crees? Veamos
Elegimos el 16, que es par, entonces dividimos entre 2
16/2=8
Obtenemos 8 que es par, dividimos entre 2
8/2=4
Obtenemos 4 que es par, dividimos entre 2
4/2=2
Obtenemos 2 que es par, dividimos entre 2
2/1=1
Obtenemos 1 que es impar, multimplicamos por tres y sumamos 1
1*3+1=4
Obtenemos 4 que es par, dividimos entre 2
4/2=2
Obtenemos 2 que es par, dividimos entre 2
2/1=1
... ¿ves el blucle?
Elegimos el 5
Es impar, multimplicamos por tres y sumamos 1
5*3+1=16
Obtenemos 16 que es par, dividimos entre 2
16/2=8
Obtenemos 8 que es par, dividimos entre 2
8/2=4
Obtenemos 4 que es par, dividimos entre 2
4/2=2
Obtenemos 2 que es par, dividimos entre 2
2/1=1
... de nuevo el bucle 🤯
A continuación puedes probar a introducir cualquier número natural en la caja y lo meteré en un algoritmo para presentarte el resultado de aplicarle las reglas de la conjetura de Collatz:
Esperando número natural
Te cuento, que hasta la fecha se han probado todos los números hasta el 5.764 por 10 elevado a 18, es decir, más de 5 trillones y todos y cada uno verifican la conjetura 🤯
Este algoritmo está pidiendo recuersividad a voces.
Si me sueles leer sabes que me encanta aplicar recursividad, si no sabes lo que es te lo explico aquí 👇
¿Qué es la recursividad?
Comprende de una vez qué es la recursividad
Al turrón...
getCollatz(myNumber:number, myArray:number[]=[]): number[]{ myArray.push(myNumber); if(myNumber===1) return myArray; if(myNumber%2===0){ return this.getCollatz(myNumber/2, myArray); } return this.getCollatz(myNumber*3+1,myArray); }
Hasta luego 🖖