Java Reference
In-Depth Information
in two forms: recursive methods (methods that call themselves) and recursive
objects (objects of a class that contain an instance of the same class).
• Base cases and recursive cases.
With regard to methods, a
base case
is a set
of parameter values for which no recursive call is necessary; these cases are in
some sense the “smallest” cases. A
recursive case
is a case in which a recursive
call is made on a smaller problem of the same kind.
• Model of execution.
The model of execution of method calls that was present-
ed in Sec. 2.7 works even if there are recursive calls. A new frame is created
whenever the method is called, so several frames for different calls to the same
method may be in memory at the same time.
• Depth of recursion.
The depth of recursion is the number of frames for calls
to the same method that have not yet completed. There should be a maximum
depth of recursion, or else there is infinite recursion.
• Two perspectives on recursion.
There are two perspectives on recursive
method calls. To understand a body with a recursive call in it, understand that call
in terms of the spec of the method. To understand how recursion works in gen-
eral, look at how recursive calls are executed, using the model of memory.
• Tail recursion.
A recursive call is tail recursive if nothing is done in the method
body once the call is completed. Tail-recursive calls can be implemented without
creating another frame. However, if the system does not do that, you can remove
tail-recursive calls yourself.
/**
Variable
word
is not
""
. If
subEnum
has no more enumerations, then add
1
to
pos
,
keeping the definition of all fields true
*/
private void
getReadyForNext() {
if
(subEnum.hasMoreElements())
{
return
; }
pos= pos + 1;
if
(pos == word.length()) {
hasAnother=
false
;
return
;
}
//
Store in
subWord
the
word
but without character
word[pos]
//
and create an enumeration
subEnum
for it
subWord= word.substring(0,pos) + word.substring(pos + 1);
subEnum=
new
PermutationGenerator(subWord);
}
}
Figure 15.13:
Class PermutationGenerator (continued)
Search WWH ::
Custom Search