Write a recursive method called sumTo that accepts an integer parameter n and returns a real number representing the sum of the first n reciprocals. In other words, sumTo(n) returns (1 + 1/2 + 1/3 + 1/4 + ... + 1/n). For example, sumTo(2) should return 1.5. The method should return 0.0 if it is passed the value 0 and throw an IllegalArgumentException if it is passed a value less than 0.
package recursion;
public class SumOfReciprocals {
public static double sumTo(int value) {
// throw exception if the value less than 0
if (value < 0)
throw new IllegalArgumentException();
// return 0.0 if the value equals 0
if (value == 0)
return 0.0;
// recursive call
return (double) sumTo(value - 1) + 1.0 / value;
}
public static void main(String[] args) {
System.out.println("Sum of reciprocals is: " +sumTo(2));
}
}
Output:
Sum of reciprocals is: 1.5