2016-08-11 2 views
-3

Для моего школьного проекта я делаю программу, которая использует вероятность вычисления значения pi, мне нужен цикл в программе, который будет работать не менее 20000 раз, но моя программа не будет больше 4000.Цикл продолжает переполняться

вот код:

public static void main(String[] args) { 
    game(); 
    System.out.println(pi); 
} 

public static void game(){ 
    if(total >= 4000){ 
    return; 
    } 
    randomNum = 1.1; 
    generatex(); 
    generatey(); 
    distance(randomx, randomy); 
    game(); 
    return; 
} 

private static void distance(double x, double y) { 
    double dist = Math.sqrt((x*x)+(y*y)); 
    if(dist <= 1){ 
     ++in; 
    } 
     ++total; 
    if(total != 0){ 
    pi = 4 * (in/total); 
    } 
} 

public static double generatex(){ 
    random(); 
    randomx = randomNum; 
    return randomx; 
} 

public static double generatey(){ 
    random(); 
    randomy = randomNum; 
    return randomy; 
} 

public static double random() { 
    randomNum = rand.nextDouble(); 
    if(randomNum <= 1){ 
     return randomNum; 
    } 
    random(); 
    return 0d; 
} 

}

+0

Почему бы не использовать петлю? –

+0

btw нет необходимости вычислять sqrt (что дорого): неравенство эквивалентно без него. – Bathsheba

+0

У вас нет цикла в вашей программе, вы имеете в виду рекурсию? Что значит «не собирается»? Переполнение стека? –

ответ

3

Изменение линии

if(total >= 4000){ 

-

if(total >= 20000){ 
Смежные вопросы