import cs1.Keyboard; public class Pi2 { private static double termValue(int term) { return 4.0/(2.0 * term - 1.0); } public static double pi(int term, double sum, double epsilon) { double tn = termValue(term); if (term % 2 == 0) tn = -tn; // even terms are negative System.out.println("term=" + term + "\t" + "value=" + tn + "\t" + "sum=" + sum); if (Math.abs(tn) < epsilon) return sum + tn; else return pi(term + 1, sum + tn, epsilon); } public static void main(String[] args) { System.out.println("This program estimates PI using an infinite series."); System.out.println("Enter minimum term size, e.g. 0.001"); double epsilon = Keyboard.readDouble(); System.out.println("Pi is " + pi(1, 0.0, epsilon)); } }