A base case of a recursive definition is a case that has an immediate solution.
factorial( 0 ) = 1 <-- base case
factorial( N ) = N * factorial( N-1 )
In the "static view" of recursion, a math-like definition is translated into a Java method. In the static view you think about text and syntax. You don't think about run time. Here is the math-like definition of recursion:
factorial( 0 ) = 1 factorial( N ) = N * factorial( N-1 )
And here is a skeleton of a Java method:
int factorial( int N ) { if ( __________ ) return 1; else return ______ * _____________; }
Practice thinking statically. Translate the math-like definition into the Java code.