Вот пример кода:Почему этот цикл не заканчивается?
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) ;
}
это прекрасно работает, пока не доберется до 2. Затем она выводит 2 4 2 4 2 4 2 4 2 4
бесконечно. мне кажется, что если 2 введено как n, то (n % 2 == 0)
истинно 2 будет разделено на 2 на yeild 1. тогда 1 будет напечатано и с (n != 1)
будет ложным, цикл завершится.
Почему этого не происходит?
Это рекурсия, а не петля. –
, если вы правильно отпечатаете свой код, легче обнаружить логические ошибки, подобные этому – Kip