ciao,
ho un form in cui l'utente seleziona 2 nomi, a quasto punto il codice deve controllare se qst due nomi hanno qlk amico in comune e quindi possono creare un percorso logico tra di loro; se c'è il percorso diretto e quindi sono amici ok, altrimenti devo lanciare una funzine ricorsiva, che cerca il percorso (dato il noma A e B, creco gli amici di A e vedo se tra loro è presente il nome B, se non c'è, prendo il primo amico di A e cerco i suoi amici e confronto, se non c'è cerco con il secondo amico e confornto.. etc etc.. finche arrivo allo'utlimo) se uno risulta = B alloras esco dal ciclo e dico di avere trovato il percorso, altrimenti dico che non c'è nessun legame.

io ho cercato di fare la funzione ricorsiva, ma non da nessun erroe, ma non restituisce nulla,...posto il codice qui sotto:

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
            {
                bool ret3 = false;
                ret3 = clsFunctions.LoadDataSetFromSqlStatement(Cnnstr, "SELECT kiave2 FROM amicizie WHERE (amicizie.kiave1 = '" + userP + "')", "PROVA2", ref DSetR, true);

                if (ret3 == true)
                {
                    if (DSetR.Tables["PROVA2"].Rows.Count > 0)
                    {
                        int num2;
                        num2 = DSetR.Tables["PROVA2"].Rows.Count;
                        int i;
                        bool risultato;
                        risultato = false;
                        string b;
                        DSetR.Tables["PROVA2"].Rows[0]["kiave2"].ToString();
                        num2 = DSetR.Tables["PROVA2"].Rows.Count;
                        for (i = 0; i < num2; i++)
                        {
                            b = DSetR.Tables["PROVA2"].Rows[i]["kiave2"].ToString();
                            if (b == userA)
                            {
                                risultato = true;
                                break;
                            }
                            else
                            {
                                risultato = false;
                            }

                            if (risultato == true)
                            {
                                nessuna.Text = "percorso tra gli urenti selezionati trovato";
                            }
                            else
                            {
                                this.ricorsiva(b, userA);
                            }
                        }
                    }
                    else
                        {
                            nessuna.Text = "L'utente " + userP + " non ha ancora aggiunto nessun utente alla lista degli amici";
                        }
                }
devo fare 2 cicli xkè le amicizie all'interno del DB non possono eserci doppioni, per cui
nella tabella amicizie che ha i campi kiave1 e kiave2, posso avere A,C o B,A e quindi faccio 2 cicli uno per kiave 1 e uno per kiave2.. qlk riesce ad aiutarmi?