CONFRONTO TRA CICLO DI LETTURA E LETTURA RICORSIVA
Struttura del ciclo di lettura:
leggi primo elemento
while (elemento valido) {
elabora elemento letto;
leggi lemento successivo;
}
Lettura ricorsiva:
leggi un elemento
if (elemento valido) {
elabora elemento letto;
chiama ricorsivamente lettura;
}
Esempio: copia di un file (a cui si accede tramite un BufferedReader) su uno stream di output.
Implementazione iterativa:
public static void copiaIterativa(BufferedReader br, PrintStream p) throws IOException {
String s = br.readLine();
while (s != null){
p.println(s);
s = br.readLine();
}
}
Implementazione ricorsiva:
public static void copiaRicorsiva(BufferedReader br, PrintStream p) throws IOException {
String s = br.readLine();
if (s != null){
p.println(s);
copiaRicorsiva(br, p);
}
//else non fare nulla
}