Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    trasformare una funzione ricorsiva in iterativa

    codice:
    'Restituisce l'elenco di tutti i controlli contenuti in un altro controllo
    Public Function GetChildControls(ByVal container As Control, ByVal type As Type) As ArrayList
    	Dim result As New ArrayList
    	For Each ctrl As Control In container.Controls
    		'aggiunge il controllo di tipo cercato al risultato
    		If ctrl.GetType Is type Then
    			result.Add(ctrl)
    		End If
    
    		'invoca ricorsivamente questo metodo per aggiungere ache tutti i 
    		'controlli figli
    		result.AddRange(GetChildControls(ctrl, type))
    	Next
    	Return result
    End Function
    Mi aiutate a trasformare questa funzione in modo che non sia ricorsiva?
    Pietro

  2. #2
    è come dire "mi date una martellata sulle p***e"

    non ti aiuto per una cosa simile.

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Daniele80
    è come dire "mi date una martellata sulle p***e"

    non ti aiuto per una cosa simile.

    Ma scusami, perché? :master: Non ho chiesto una martellata sulle palle ma un aiutino su codice basic o c#
    Pietro

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    fai una cosa, invece di chiederci 'ste cose a Pasqua...

    metti Trace=true come direttiva di Page ed avrai tutti i ClientID della Pagina
    (lo so che non e' quello che ti serve)

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da djciko
    fai una cosa, invece di chiederci 'ste cose a Pasqua...

    metti Trace=true come direttiva di Page ed avrai tutti i ClientID della Pagina
    (lo so che non e' quello che ti serve)

    Mi pare che dovreste essere più buoni a Pasqua

    A me quella funzione va benissimo, solo che voglio capire come si potrebbe fare rinunciando alla ricorsione (dato che una funzione ricorsiva si può sempre trasformare in cicli for)

    ps. Sto qui fino alle 4, poi spengo e riaccendo martedì, perciò sbrigatevi a darmi una risposta

    Pietro

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Originariamente inviato da pietro09
    Mi pare che dovreste essere più buoni a Pasqua

    A me quella funzione va benissimo, solo che voglio capire come si potrebbe fare rinunciando alla ricorsione (dato che una funzione ricorsiva si può sempre trasformare in cicli for)

    ps. Sto qui fino alle 4, poi spengo e riaccendo martedì, perciò sbrigatevi a darmi una risposta


    accidenti, fai orario d'ufficio fino alle 4 ? beato te

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da djciko
    accidenti, fai orario d'ufficio fino alle 4 ? beato te
    La mia sveglia suona alle 4:27 e torno a casa alle 18:30

    (In inverno si esce al buio, e si ritorna al buio)
    Pietro

  8. #8
    se ho capito bene devi fare cosi:

    ciclo sul contenitore
    prendi il primo controllo e cicli all'interno di questo
    se all'interno di questo ne trovi un'altro cicli all'interno di questo ecc.

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Daniele80
    se ho capito bene devi fare cosi:

    ciclo sul contenitore
    prendi il primo controllo e cicli all'interno di questo
    se all'interno di questo ne trovi un'altro cicli all'interno di questo ecc.
    a me servirebbe codice, basic, c, pascal, fortran, ..., ma codice

    Pietro

  10. #10
    eheheh non mi va di scrivere tanto tu sei bravo da capire quello che ho detto.

    Dim result As New ArrayList
    For Each ctrl As Control In container.Controls
    'aggiunge il controllo di tipo cercato al risultato
    If ctrl.GetType Is type Then
    result.Add(ctrl)
    For Each ctrl2 As Control In app.Controls
    If ctrl2.GetType Is type Then
    result.Add(ctrl2)
    end if
    next
    End If
    Next

    e cosi via ora neanche ho pensato + di tanto, però per ogni controllo trovato devi clicare per vedere se ne contiene altri ecc. praticamente è una logaritmica

    la ricorsività è nata per queste cose quindi il mio consiglio è lascia perdere neanche te lo devi ponere i problema se non sai come fare direi che è MEGLIO

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.