Jump to content
hc19

Explicação

Recommended Posts

hc19

Bom dia,

Alguém me pode explicar como funciona este código?

Private Function RecursiveSearch(path as String) as Boolean
    Dim dirInfo As New IO.DirectoryInfo(path)
    Dim fileObject as FileSystemInfo
    for each fileObject in dirInfo.GetFileSystemInfos()
          If fileObject.Attributes = FileAttributes.Directory Then
               RecursiveSearch(fileObject.FullName)
        else
            Console.WriteLine(fileObject.FullName)
           End If
    next
    Return True
End Function

obrigado

Share this post


Link to post
Share on other sites
Caça

Vai buscar todos os ficheiros que estão dentro da pasta indicada e dentro de todas as suas sub pastas


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
softklin

De notar que esse código usa recursividade. Talvez não estejas familiarizado com o termo e daí te faça confusão. Basicamente, uma função recursiva é uma função que se chama a ela própria.

Nesse contexto, o código faz o que o Caça disse. A recursão está naquele if: se o objecto encontrado for uma pasta, então o mesmo código é aplicado para essa pasta. Pensa nisto como interromperes o código actual para aplicar novamente essa função A meio do código vais correr esse mesmo algoritmo e só quando ele acabar, é que retomas ao código que estavas a correr anteriormente.

Espero que tenhas percebido, caso contrário posso tentar arranjar um exemplo melhor. 😳


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
bioshock

O exemplo prático é o que tu acabaste de mostrar.

Seja o directório ou sub-pastas, ele apanha todos os ficheiros.

Share this post


Link to post
Share on other sites
thoga31

Um exemplo prático e simples é o do factorial. É, regra geral, o exemplo utilizado quando se ensina a recursividade.

Pode-se calcular um factorial com um ciclo For. Contudo, torna-se muito mais intuitivo fazê-lo pela recursividade, isto porque a fórmula geral do factorial é, em si, "recursivo":

n! = n * (n-1)!

Em pseudo-código, tu vais fazer algo como:

Função factorial(n As Integer) As Integer
   Retornar n * factorial(n-1)
Fim Função

Contudo, não se pode esquecer que, este código por si só, é um ciclo infinito. Ou seja, a recursividade inclui uma estrutura de paragem - normalmente um If... Then... Else...

Completando o código, e implementando os casos do factorial:

Função factorial(n As Integer) As Integer
   Se (n < 0) Então
      Return 0   'isto porque não há factorial de números negativos - 0 indicará um erro
   SeNão Se (n = 0) Ou (n = 1) Então
      Return 1   '1! = 1, e 0! = 1 - é, de igual forma, a condição de paragem
   SeNão
      Return n * factorial(n - 1)   'n! = n * (n-1!)
Fim Função

Em VB.NET:

Function factorial(n As Integer) As Integer
    If (n < 0) Then
        Return 0
    ElseIf (n = 0) OrElse (n = 1) Then
        Return 1
    Else
        Return n * factorial(n - 1)
    End If
End Function

Espero que tenhas entendido a recursividade. ;)

Cumpz.


Knowledge is free!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.