Non capisco perche' parli di ricorsione, che nel programma non usi;
il docente ha chiesto di usare l'algoritmo di Euclide ricorsivo?
La ricorsione si ha quando una funzione contiene al proprio interno
una chiamata a se' stessa.
Il problema e' risolvibile facilmente anche senza utilizzare la ricorsione.
Il mio compilatore g++ compila il tuo codice, ma all'avvio del programma
si verifica un errore di segmentazione; l'errore sparisce se dimensiono
l'array vet[] nel codice da compilare con istruzioni tipo int vet[10]
o int vet[n], dove n e' stato predefinito con la direttiva #define n 10
Si vede che non tutti i compilatori supportano il dimensionamento
di un array in fase di esecuzione (mi pare di aver letto che e' una
caratteristica del C99).
Se il problema chiede espressamente che sia l'utente a indicare in anticipo
quanti numeri vuole inserire, si puo' risolvere allocando dinamicamente
la memoria nella quantita' necessaria per poi accedere ai numeri tramite puntatore
(o usando la stessa notazione degli array o con l'aritmetica dei puntatori):
...........
int *vet; // puntatore a interi
...........
cin>>n; // lettura numero di elementi da allocare
...........
vet=new int[n]; // allocazione della memoria per ospitare n interi
...........
cin>>vet[i]; // inserimento di un numero nella memoria allocata
...........
delete [] vet // deallocazione quando la memoria non serve piu'
...........
vet=NULL // assegnamento di NULL a vet prima della fine del programma
...........
Ho constatato che la condizione (vet
/ vet [j]!= 1)
associata al ciclo while fa entrare in un ciclo infinito.
Ma prima di entrare nel merito della questione ti consiglio
di creare una funzione apposita, per calcolare il mcd,
tipo:
int mcd(int a, int b)
{
algoritmo di Euclide
}
cosi' il programma sarebbe molto piu' leggibile
e potresti individuare piu' facilmente l'errore.
Inoltre capita in vari programmi di dover calcolare il mcd,
cosi' ti troveresti la funzione gia' pronta anche per altre occasioni.
Se cerchi su Google, troverai subito degli esempi di tale funzione,
sia ricorsiva che non.