Ricorsione

giovedì 15 febbraio 2007 - 16.22

corkie 12 Profilo | Newbie

Se io ho una tabella a due colonne di 1000 righe

col1 col2
21 56
66 34
54 32

con campi int non chiavi e devo trovare il percorso tra due id come faccio ricorsivamente????

Cteniza Profilo | Guru

Con un solo comando sql, solo con una stored procedure
In pseudocodice:
FunzioneRicorsiva (Parametro = codice padre)
Per ogni elemento figlio del padre
- fai le cose che devi fare sul figlio
FunzioneRicorsiva(Codice del figlio)
Fine Funzione

corkie 12 Profilo | Newbie

Il mio problema sta nel fatto che non riesco a trovare un controllo
per evitare che i vada in loop
Mi spiego meglio..
col1 col2
1 2
3 5
4 5
2 1

Non è un'albero ma un grafo....
Non riesco a evitare questo caso.. 1 padre di 2 due fratello 1 di fratello di 2

Non riusciresti gentilmente a postarmi del codice o qualche link d'esempio
Purtopppo sono un neofita e le vostri consigli mi sono molto utili.....

Cteniza Profilo | Guru

Non esiste codice che possa risolvere il paradosso di avere il padre anche come figlio.
Che io sappia le soluzioni possono essere solo due.
- fai correggere i dati e risolvere l'ambiguità
- gestire una collection dove depositare quelli che sono già passati come padre in modo tale da interrompere qualsiasi corto circuito.

corkie 12 Profilo | Newbie

giusto infatti oggi tentavo di prima caricare una collection con tutti i dati
e poi per ogni ramo risolto toglierne uno..
ma per colpa della mia poca esperienza non trovavo un metodo adatto per uscire
dal for di ricerca togliere il padre del grafo risolto dalla collection
e rientrare...
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5