Collatz Conjecture Comments
Comments
-
For me it wasn't about stopping the loop but actually how to get the number print the first time(initial input) and the last time (1) without having the loop interfering.
-
Whats wrong with my code? It keeps giving me the "Runtime error"
public static void doStuff(int num){ System.out.print(num + " "); while(num > 1){
if(num % 2 == 0){ num = num/2; System.out.print(num + " "); }else{ num = num * 3 - 1; System.out.print(num + " "); } } }
-
@Mikas Your else says "num = num * 3 - 1" it should be +1.
-
I dont understand why would 3-1 cause runtime error?
-
@Jig, you can get stuck in a loop, eg 5, 14, 7, 20, 10, 5 ...
-
How did you know that it would get stuck in a loop. Thanks for the insight. Love what you guys are doing.
-
while(num != 1){ System.out.print(num+" "); if(num%2==0) { num = num/2; } else { num = num*3+1; } } System.out.print("1");
-
@Learneroo should I create two loops?
-
@Bernard, that's not necessary. You can create one
while
loop, with a condition inside it that determines what number to go to next. -
@learneroo that what I figured ...a for loop wouldn't work here.
-
@learneroo that was a question...thanks
-
Inside the loop, you can check if
num
divides by two or not, and then setnum
to the appropriate value.
(See a solution if you're still stuck.) -
I got it right , but I'm not sure I understand how the if statements work in conjunction with the loops. Thanks
-
the while loop will repeatedly run through the code (in its body) while a specified condition is true. anything can happen inside the loop body. in this case, an if-else
statement is used to set the value of
num
. eventually,num
reaches a value (1) that makes the while condition no longer true, so the loop ends. -
your correct output's are wrong.
for input=5 , the output should be 16 8 4 2 1 -
Sorry, due to a change yesterday it was mistakenly showing the number 5 for the count, it's been fixed.
zkvarz
Jan 17, 3:12 AMQuite simple, one problem was to stop the toop, eventually I've managed it.