Below is the syntax highlighted version of ExcessiveSpace.java
from §2.3 Recursion.
/************************************************************************* * Compilation: javac ExcessiveSpace.java * Execution: java ExcessiveSpace N * * A recursive function that consumes excessive stack space to compute * the result. * * % java ExcessiveSpace 5000 * Exception in thread "main" java.lang.StackOverflowError * at ExcessiveSpace.H(ExcessiveSpace.java:19) * at ExcessiveSpace.H(ExcessiveSpace.java:20) * at ExcessiveSpace.H(ExcessiveSpace.java:20) * ... *************************************************************************/ public class ExcessiveSpace { public static double H(int N) { if (N == 1) return 1.0; return H(N-1) + 1.0/N; } public static void main(String[] args) { int N = Integer.parseInt(args[0]); System.out.println(H(N)); } }