#Java - 2 haikus protected static int factorial(int n) { if (n == 0) { return n + 1; } return factorial(n - 1) * n;} Even when the question isn't [tag:code-golf], I often catch myself golfing the answer. In this case, I golfed the number of haikus. I pronounce it so: >protected static<br> >int factorial int n<br> >if n is zero >return n plus one<br> >return factorial n<br> >minus one times n ------ Test program: class Factorial { // class Factorial public static void main(String[] // public static void main string command_line_run_args) { // command line run args int i = 0; // int i is zero while (7 != 0) // while seven is not zero System.out. // System dot out dot println(i + "!" // print line i plus not + " = " + factorial( // plus is plus factorial i += 1));} // i plus equals 1 protected static int factorial(int n) { if (n == 0) { return n + 1; } return factorial(n - 1) * n;}} Note that this program starts outputting `0`s fast; that is a result of overflow. You could easily get larger correct numbers by changing each `int` to `long`. Standard pronunciations for `System.out.println` and `public static void main(String[] args)` are reflected in the program.