Lista valori booleani

Paloini02

Nuovo Utente
1
0
Salve ragazzi sto cercando di fare questo esercizio sulle liste....Credo di aver sbagliato qualcosa sul metodo ricorsivo (quello iterativo spera sia giusto
f1
)....potresti aiutarmi per favore ?

Si definisca la classe Lista che rappresenta una lista di booleani concatenata tramite riferimenti.
Nella classe Lista si definisca:
• il costruttore che, dato un intero n, costruisce una lista di n valori booleani casuali
• un metodo iterativo che calcola in modo efficiente l'OR esclusivo degli elementi della lista (cioè
restituisce true se la lista contiene esattamente un valore true, altrimenti restituisce false).
• la versione ricorsiva del metodo sopra.

Java:
package esercizio2;

/**
 *
 * @author Marco
 */
public class Esercizio2 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Lista list= new Lista(30);
        
        System.out.println("Verifica OR eslusivo iteriativo: "+ list.calcola());
        System.out.println("Verifica OR eslusivo ricorsivo: "+ list.calcolaRic());
    }
    
}
Java:
package esercizio2;

import java.util.Random;

/**
 *
 * @author Marco
 */
public class Lista {
    
 Elemento testa = null;

    public Lista(int n) {
        Random r = new Random();
        for (int i = 0; i < n; i++) {
            testa = new Elemento(r.nextBoolean(), testa);
        }
    }

    public boolean calcola() {
        
        for (Elemento e = testa; e != null; e = e.successivo) {
            if (e.n == true) {
                return true;
            }
        }
       return false;
    }

    public boolean calcolaRic() {
        return calcolaRic( testa);
    }


    public boolean calcolaRic( Elemento testa) {
        if (testa == null) {
            return false;
        } else {
            calcolaRic(testa.successivo);
            if (testa.n == true) {
                return true;
            }
            return false;
        }
    }

}

Java:
public class Elemento {
    
    boolean n;
    Elemento successivo;

    public Elemento(boolean n, Elemento successivo) {
        this.n = n;
        this.successivo = successivo;
    }
}
 

pabloski

Utente Èlite
2,868
916
Java:
  public boolean calcolaRic( Elemento testa) {
        if (testa == null) {
            return false;
        } else {
            if (testa.n == true) {
                return true;
            }
            return calcolaRic(testa.successivo);;
        }
    }

Questa è la versione corretta. Se ci rifletti e immagini la catena delle chiamate, capirai perchè.
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!