я пытаюсь некоторые математические-операции с Java, что делает проверить номер, если его (не) даже и изменить его до тех пор, как он получает 1.Почему цикл умирает? (Коллатца гипотеза)
Я пытаюсь запустить мой цикл для 999999times , он, кажется, застревает примерно в ~ 120000 раз. Ну, это не останавливается с Исключением, похоже, что компилятор застрял.
Я не так хорош с Java, может кто-нибудь объяснить мне, что здесь происходит?
public static void main(String[] args) {
int n = 0;
int highestNumber = 0;
int highestCounter = 0;
int counter = 0;
for (int i = 2;i<1000000;i++) {
if (i%10000==0) {
System.out.println(i);
}
n = i;
while (n!=1) {
if (n%2==0) {
n = n/2;
} else {
n=3*n+1;
}
counter++;
}
if (counter>highestCounter) {
highestCounter = counter;
highestNumber = i;
System.out.println("HIGHEST "+highestNumber+" | counter = "+counter);
}
counter = 0;
n = 0;
}
System.out.println("final "+highestNumber);
}
Просто троллинг: 'for (int i = 2; i <1000000; i ++) {' выполнит 999998 раз ... – ppeterka
Где инициализируются переменные 'counter' и' mostCounter'? – zakinster
Привет. Просить людей обнаружить ошибки в коде не особенно продуктивно. Вы должны использовать отладчик (или добавить заявления печати), чтобы изолировать проблему, отслеживая ход вашей программы и сравнивая ее с тем, что вы ожидаете.Как только двое расходятся, вы нашли свою проблему. (И затем, если необходимо, вы должны построить [минимальный тестовый сценарий] (http://sscce.org).) –