Newsgroup: it.comp.lang.visual-basic
Titolo: ricorsione

Ciao a tutti.
Qualcuno mi potrebbe fare un esempio di funzione o sub
ricorsiva?...magari il classico esempio per il calcolo del
fattoriale....in Vb....
Se poi avete anche dell adocumentazione sulle funzioni ricorsive in
VB,tanto meglio...
Grazie,e ciao ,
Alberto

Crede che la domanda sia impropria, nel senso che un algoritmo ricorsivo lo
sarà i tutti i linguaggi, dovresti cercare le versioni VB degli algoritmi
ricorsivi più comuni. Fammi capire è questo che vuoi o chiedi se esiste una
funzione ricorsiva tipica del VB, in questo caso la risposta è no!


funzione ricorsiva tipica del VB, in questo caso la risposta č no!
Nono...questo lo so...
Ciao e grazie...
Alberto.

classico...
Una cosa tipo questa ?
Public Function Fatt(ByVal Num As Double) As Double
    Select Case Num
    Case Is < 1: Exit Function
    Case 1: Fatt = 1: Exit Function
    Case Else: Fatt = Num * Fatt(Num - 1)
    End Select
End Function
-- 
ciao, hal

 fattoriale....in Vb....
Da quello che leggo mi par di capire che: (ignorami se sbaglio)
Stai cercando di capire i principi della ricorsione ma non è tutto chiaro
Lo stai facendo attraverso qualche documentazione che propone il classico
esempio del fattoriale
Ritieni che il modo migliore per capire siano gli esempi pratici
Vorresti che gli esempi fossero in VB perché ti è familiare
Se è cosi questa è la mia risposta:
Ritengo, da buon autodidatta, che l'esempio del fattoriale non sia la scelta
più felice per capire questo concetto
(delle motivazioni se vuoi si può discutere)
Io propongo invece un altro esempio che mi appare maggiormente e
costantemente sotto gli occhi di tutti
Problema:
Cercare un file in un intero "albero" di directory e subdirectory
Analisi problema:
Le directory si esaminano tutte allo stesso modo
Le directory sono più di una
Le subdirectory sono una dentro l'altra
Non si è in grado di quantificare preventivamente le directory
Analisi ricorsione:
E' una routine
Viene chiamata più volte
Le chiamate sono annidate
Non si è in grado di prevedere quante chiamate ci saranno
Conclusione:
Il problema si risolve con una routine ricorsiva
In particolare la routine ricorsiva deve avere:
la verifica delle condizioni in cui deve richiamare se stessa (ricorsione)
(nell' esempio se durante l'analisi di una directory si trova una
subdirectory la routine deve essere richiamata)
la verifica delle condizioni in cui la ricorsione non deve avvenire
(se nella directory in esame non ci sono subdirectory)
in particolare è molto importante la verifica delle condizioni di uscita
dalla ricorsione
poiché, visto che le chiamate alla routine sono annidate,
se il processo di ricorsione non riesce a fermarsi
si crea un loop che esaurisce lo stack (con relativo errore)
Spero di essere riuscito ad illuminarti
per quanto riguarda un codice d'esempio ne ho realizzato uno in VBScript
per un'applicazione ASP allo scopo di generare una struttura grafica ad
albero
che rappresenti la mappa del mio sito
puoi osservarla in 
www.cerretosoft.it/map
puoi scaricare il codice in 
www.cerretosoft.it/download
 sezione
"miscellanea" nome "tree"
Se hai altri problemi fatti vivo
Mauro

Un altro algoritmo che puoi studiare è il quick sort


Yes :-)
Ciao e grazie,
Alberto

Se hai altri problemi fatti vivo
Vista la disponibilità,mi farò vivo certamente...
Ciao e grazie,
Alberto.

 Sì,perchè no?....dimmi la tua opinione...
Il problema è in questi termini:
(tra fatti e deduzioni personali)
Vogliamo imparare cosa è la ricorsione, ma ci appare subito un po'
complicato fin dalla definizione;
già dire che una routine richiama se stessa ci sembra chiaro ma ci sfugge il
senso pratico.
Normalmente, in questi casi, ci si affida ad un esempio concreto che ci
renda possibile capire restando con i piedi per terra, purtroppo tale
tecnica non si incontra spesso e non ci viene in mente nessun esempio
[un po' come quando la professoressa di italiano dice: mi faccia un esempio
di palindromo (che se non fosse stato per striscia la notizia nessuno
saprebbe che è una parola che letta da entrambi le direzioni appare
identica) e nel nostro cranio si crea immediatamente un'anomalia quantica
(un buco nero)]
E' allora che ci vengono in aiuto i matematici fornendoci l'esempio del
fattoriale (o perché no anche dei frattali).
Formalmente è tutto corretto se non fosse che non abbiamo la minima idea di
cosa sia un fattoriale
e se ce l'abbiamo non ne capiamo la sua applicabilità (io non l'ho ancora
capita)
(poi ci sono anche motivi pratici tipo: ho già speso 80 carte per il libro
su VB figurati se vado a comprarne uno di matematica per capire cos'è sto
fattoriale che mi servirà solo sta volta in tutta la vita)
Ebbene ci troviamo nella situazione di appoggiarci ad "A" per capire "B"
senza capire nulla neanche di "A":
come si può pretendere che "B" risulti chiaro???
Ritengo peraltro che l'architettura ad albero delle directory sia quanto di
più comprensibile ci sia in campo informatico
(se non altro perché altrimenti non troveresti più i documenti che scrivi) e
il fatto che la funzione "trova file" si risolva con una routine ricorsiva,
lo rende l'esempio ideale.
--
Mauro
www.cerretosoft.it

lo rende l'esempio ideale.
Ok...grazie per l'opinione e l'attenzione...
Mi metterò al lavoro,speriamo che ne esca qualcos adi buono..
Cioa,
Alberto