Esercizio 1. ============ Si implementi in Java un metodo RICORSIVO che, ricevuto un array di interi, restituisca il valore massimo in esso contenuto. ESERCZIO 2. =========== Creare in Java una classe "Insieme" che rappresenti un insieme matematico di numeri interi compresi tra 0 e 20. Definire per la classe i seguenti metodi, oltre a costruttore, metodi equals() e toString(). - aggiungi che dato un intero lo aggiunga all'insieme; - elimina che dato un intero lo elimini dall'insieme; - cardinalità che restituisca la cardinalità dell'insieme; - vuoto che restituisca true se l'insieme è vuoto, false altrimenti; - tuttoUniverso che restituisca true se l'insieme contiene tutti gli elementi del dominio considerato (tutti gli interi da 0 a 20 nel nostro caso), false altrimenti; - complementare che restituisca un nuovo insieme contenente tutti e soli gli elementi del dominio non presenti nell'insieme; - unione che, dato un secondo insieme, restituisca un nuovo insieme ottenuto dalla loro unione; - intersezione che, dato un secondo insieme, restituisca un nuovo insieme ottenuto dalla loro intersezione; - differenza che, dato un secondo insieme, restituisca un nuovo insieme ottenuto dalla loro differenza; - differenzaSimmetrica che, dato un secondo insieme, restituisca un nuovo insieme ottenuto dalla loro differenza simmetrica; - sottoinsiemeDi che, dato un secondo insieme, restituisca true se l'insieme è un suo sottoinsieme, false altrimenti; - sovrainsiemeDi che, dato un secondo insieme, restituisca true se l'insieme è un suo sovrainsieme, false altrimenti; - Leggi che legga da input un insieme. Si può scegliere di realizzare tale metodo in due modi alternativi. - Prima possibilità (più semplice): si richiede in input una sequenza di numeri interi (appartenenti al dominio considerato) terminata da -1. I numeri introdotti costituiranno gli elementi dell'insieme. - Seconda possibilità: si richiede di introdurre l'insieme come stringa opportunamente formattata, cioè numeri separati da virgole e racchiusi tra parentesi graffe. Sarà il metodo a preoccuparsi di scandire la stringa in input in modo da ricavare gli elementi da memorizzare nell'insieme. Scrivere poi un programma (con un main()) che legga da input un insieme e ne calcoli la cardinalità ed il complementare. Letto poi un secondo insieme, applicare ai due insiemi le varie operazioni definite per la classe e stamparne il risultato. ESERCZIO 3. =========== Si implementi in Java un metodo RICORSIVO avente il seguente prototipo: public static boolean verifica (int v[], int i) Il metodo deve restituire true se e solo se l’array “v” è costituito da una sequenza alternata di numeri positivi e negativi. In altre parole, ogni numero positivo deve sempre essere seguito da un numero negativo, ed ogni numero negativo deve sempre essere seguito da un numero positivo. Il metodo deve restituire false altrimenti.