L'objectiu d'aquest exercici és familiaritzar-se amb l'ús del depurador.
L'exercici no té com a objectiu aprendre a programar en Java.
És possible que s'utilitzen operadors i estructures que encara no coneixes. No passa res:
pots reprendre aquests exercicis a mesura que aprengues aquestes estructures en el mòdul
de Programació.
Aquest programa és un exemple de la
conjectura de Collatz – Viquipèdia.
Es parteix de l'operació següent:
Si el nombre és parell, es divideix entre 2.
Si el nombre és senar, es multiplica per 3 i se li suma 1.
\[
F(n) = \begin{cases}
\frac{n}{2} & \text{si } n \text{ és parell}\\
3n + 1 & \text{si } n \text{ és senar}
\end{cases}
\]
La conjectura afirma que, si s'aplica aquesta operació de manera repetida a qualsevol nombre natural,
sempre s'arriba a 1.
Prova el programa amb l'ajuda del depurador i corregeix-lo si és necessari. Per saber quins resultats
ha d'obtindre el programa, pots utilitzar la
Collatz Conjecture Calculator – Good Calculators.
Utilitza els casos de prova següents:
Per a \(N = 1\), el programa arriba a 1 després de 0 passos.
Per a \(N = 5\), el programa arriba a 1 després de 5 passos.
Per a \(N = 8\), el programa arriba a 1 després de 3 passos.
Per a \(N = 11\), el programa arriba a 1 després de 14 passos.
Per a \(N = 27\), el programa arriba a 1 després de 111 passos.
Una vegada comprovat que el programa funciona correctament, utilitza el depurador per saber quin
és el resultat d'aplicar 12 vegades l'operació de Collatz al nombre 27. Escriu aquest valor com a
comentari en el codi.
DebugCollatz.java
packageud1.exercises;importjava.util.Locale;importjava.util.Scanner;/* * El resultat de l'operació de collatz * per a N = 27 després de 12 iteracions * és ???? */classDebugCollatz{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in).useLocale(Locale.US);System.out.print("Introdueix un número: ");intinicial=in.nextInt();intn=inicial;intcounter=0;while(n!=0){if(n%2==0)n=n*2+1;elsen=(n+1)/2;counter++;}System.out.printf("S'ha arribat del %d al 1 després de %d passos.\n",inicial,counter);}}
📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent
a la pàgina web.
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.