Why doesn't this loop terminate?
Posted
by David
on Stack Overflow
See other posts from Stack Overflow
or by David
Published on 2010-03-24T03:11:34Z
Indexed on
2010/03/24
3:23 UTC
Read the original article
Hit count: 318
Here's the sample code:
public static void col (int n)
{
if (n % 2 == 0)
n = n/2 ;
if (n % 2 != 0)
n = ((n*3)+1) ;
System.out.println (n) ;
if (n != 1)
col (n) ;
}
this works just fine until it gets down to 2. then it outputs 2 4 2 4 2 4 2 4 2 4
infinitely. it seems to me that if 2 is entered as n then (n % 2 == 0)
is true 2 will be divided by 2 to yeild 1. then 1 will be printed and since (n != 1)
is false the loop will terminate.
Why doesn't this happen?
© Stack Overflow or respective owner