base case(s) - what can I handle directly? hard case(s) a) Can I break off and solve a small piece of this hard case? b) Can I express this hard case in terms of a slightly-less-hard case? c) Where do I do "my" part vs. the recursion doing "its" part? - after - before - between / both / etc. < <<<*>>> > d) "leap of faith" - you must BELIEVE that recursion works! Pretend that somebody already wrote this method for you. You may call it, so long as: - You don't call it for trivial cases - You can't just pass it the same parameter/state you received public static void printStars(int n) { if (n == 1) { S.o.p("*"); } else { S.o.p("*"); goodPrintStars(n - 1); } } // assume that this method is already written and works public static void goodPrintStars(int n) { ... }