Ho un errore di Stack OverFlow nel seguente programma:
Il testo dell'esercizio recita così:codice:public class Coprimi { private int[] insieme; private int cont = 0; public Coprimi () { insieme = new int [100]; } public boolean aggiungi(int n) { if(cont>100) { System.out.println("troppi elementi nell'insieme"); return false; } if (mcd(n)!=1) return false; else { insieme[cont] = n; cont++; return true; } } public int mcd (int n) { int max=1; for (int i=0;i<cont;i++) { if (mcd2(insieme[i],n)>max) { max = mcd2(insieme[i],n); } } return max; } public static int mcd2 (int x,int y) { if(x==0) return y; else if (x < y) return (mcd2(y-x , y)); else return (mcd2(x , x-y)); } } public class TestCoprimi { public static void main (String[] args) { Coprimi numero1 = new Coprimi(); System.out.println(numero1.aggiungi(15)); System.out.println(numero1.aggiungi(14)); System.out.println(numero1.aggiungi(11)); System.out.println(numero1.mcd2(35,11)); } }
Definire una classe Coprimi per gestire insiemi di numeri interi tra loro coprimi. Il costruttore inizializza l'insieme come vuoto. La classe ha due metodi aggiungi e mcd. Il metodo aggiungi prende come argomento un intero e se questo è coprimo con tutti i numeri nell'insieme lo aggiunge all'insieme e ritorna true, altrmenti non fa nulla e ritorna false. Il metodo mcd prende come argomento un intero e ritorna il massimo comun divisore tra l'intero e gli interi dell'insieme. Ad esempio se l'insieme è {15, 14, 11} e l'argomento è 35 allora il metodo ritorna 7.

Rispondi quotando