public class Pi {
public static void main(String args[]) {
double pi = 0f;
double temp = 0f;
double casas = 3f;
calculaPi(casas, pi, temp);
}
public static void calculaPi(double casas, double pi, double temp) {
for (double n = 0f; casas > n; n++) {
temp = ((4 / (8 * n + 1)) - (2 / (8 * n + 4)) - (1 / (8 * n + 5)) - (1 / (8 * n + 6)))
* (Math.pow(1 / 16, n));
pi = pi + temp;
System.out.println("[" + n + "]" + " " + temp);
temp = 0f;
}
System.out.println(pi);
}
}
[0.0] 3.1333333333333333
[1.0] 0.0
[2.0] 0.0
Não sei onde estou errando! Para n = 1 deveria ser 3,1414224663333333 o resultado das casas deveria ficar assim:
[0.0] 3.1333333333333333
[1.0] 3,1414224663333333
[2.0] 0.0
A recursividade só execulta uma vez! que é para n = 0, quando n é incrementado não funciona mais. Alguém pode me ajudar?
[img]http://upload.wikimedia.org/math/f/9/7/f9733b62958be8751fbab97431c27af5.png[/img]
Estou usando esta formula para calculo de Pi.
Acredito que o problema esteja relacionado com numeros muito pequenos em ponto flutuante que são arrendondados pra zero...
