ciao, ho fatto qualche cambiamento, dividendo il due la funzione... ma da sempre serrore di stack overflow, nessuno sa come risolvere\evitare il problema? e\o qlk suggerimento di come costruire una funzione che abbia lo stesso risultato?
codice:
void ricorsiva(string userP, string userA)
{
DataSet DSetR = new DataSet();
string Cnnstr = System.Configuration.ConfigurationSettings.AppSettings["CN1"].ToString();
bool ret2 = false;
ret2 = clsFunctions.LoadDataSetFromSqlStatement(Cnnstr, "SELECT kiave1 FROM amicizie WHERE (amicizie.kiave2 = '" + userP + "')", "PROVA2", ref DSetR, true);
if (ret2 == true)
{
if (DSetR.Tables["PROVA2"].Rows.Count > 0)
{
DSetR.Tables["PROVA2"].Rows[0]["kiave1"].ToString();
int num;
num = DSetR.Tables["PROVA2"].Rows.Count;
int i;
bool risultato;
risultato = false;
string a;
for (i = 0; i < num; i++)
{
a = DSetR.Tables["PROVA2"].Rows[i]["kiave1"].ToString();
if (a == userA)
{
risultato = true;
break;
}
else
{
risultato = false;
}
if (risultato == true)
{
nessuna.Text = "percorso tra gli urenti selezionati trovato";
}
else
{
this.ricorsiva(a, userA);
}
}
}
else
{
this.ricorsiva2(userP, userA);
}
}
}
void ricorsiva2(string P, string A)
{
DataSet DSetR2 = new DataSet();
string Cnnstr = System.Configuration.ConfigurationSettings.AppSettings["CN1"].ToString();
bool ret3 = false;
ret3 = clsFunctions.LoadDataSetFromSqlStatement(Cnnstr, "SELECT kiave2 FROM amicizie WHERE (amicizie.kiave1 = '" + P + "')", "PROVA3", ref DSetR2, true);
if (ret3 == true)
{
if (DSetR2.Tables["PROVA3"].Rows.Count > 0)
{
int num2;
num2 = DSetR2.Tables["PROVA3"].Rows.Count;
int i;
bool risultato2;
risultato2 = false;
string b;
DSetR2.Tables["PROVA3"].Rows[0]["kiave2"].ToString();
num2 = DSetR2.Tables["PROVA3"].Rows.Count;
for (i = 0; i < num2; i++)
{
b = DSetR2.Tables["PROVA3"].Rows[i]["kiave2"].ToString();
if (b == A)
{
risultato2 = true;
break;
}
else
{
risultato2 = false;
}
if (risultato2 == true)
{
nessuna.Text = "percorso tra gli urenti selezionati trovato";
}
else
{
this.ricorsiva(b, A);
}
}
}
else
{
nessuna.Text = "L'utente " + P + " non ha ancora aggiunto nessun utente alla lista degli amici";
}
}
}
}