import cs1.Keyboard; public class Pi { public static double pi(int term, double sum, double epsilon) { double t1 = 4.0/(2.0 * term + 1.0); // e.g. term 2 is 4/3 double tn = 4.0/(2.0 * term - 1.0); // e.g. term 1 is 4 double diff = tn - t1; // difference must always be positive if (term % 2 == 0) tn = -tn; // even terms are negative sum += tn; // add the term to the sum System.out.println("term=" + term + "\t" + "value=" + tn + "\t" + "PI=" + sum); return diff < epsilon ? sum : pi(term + 1, sum, epsilon); } public static void main(String[] args) { System.out.println("This program estimates PI using an infinite series."); System.out.println("Enter the difference between successive terms, e.g. 0.001"); double epsilon = Keyboard.readDouble(); System.out.println("Pi is " + pi(1, 0.0, epsilon)); } }