Structure of the loop for reading:
read the first element
while (element is valid){
process the element;
read the following element;}
Recursive reading:
read an element
if (element is valid){
process the element;
call the reading method recursively;}
Example: Copy of a file (accessed through a BufferedReader) to an output stream.
Iterative implementation:
public static void copyIterative(BufferedReader br, PrintStream p) throws IOException {
String s = br.readLine();
while (s != null) {
p.println(s);
s = br.readLine();
}
}
Recursive implementation:
public static void copy(BufferedReader br, PrintStream p) throws IOException {
String s = br.readLine();
if (s != null) {
p.println(s);
copy(br, p);
}
// else don't do anything
}