public class LittleGauss { public static void main(String[] args) { Long input = null; input = Long.parseLong(args[0]); //long power = 1000000; long power = 1; long time = System.nanoTime(); long result = 0; long timeItTook = 0; try { result = recursion(input); timeItTook = System.nanoTime() - time; System.out.println("recursion yields " + result + " and took " + timeItTook/power + " ns."); } catch (StackOverflowError e) { System.out.println("recursion led to a stack overflow"); } time = System.nanoTime(); result = loop(input); timeItTook = System.nanoTime() - time; System.out.println("loop yields " + result + " and took " + timeItTook/power + " ns."); time = System.nanoTime(); result = gauss(input); timeItTook = System.nanoTime() - time; System.out.println("gauss yields " + result + " and took " + timeItTook/power + " ns."); } static long recursion(long n) { if (n > 0) return n + recursion(n - 1); else return 0; } static long loop(long n) { long sum = 0; for (int i = 1; i <= n; i++) sum += i; return sum; } static long gauss(long n) { return (n * (n + 1L))/ 2; } }