Ir para conteúdo
Fórum Script Brasil
  • 0

RecuesÃo


todasduvidas

Pergunta

3 respostass a esta questão

Posts Recomendados

  • 0

Sua dúvida é sobre o que é recursividade? Bom, isso é quando chamamos a função dentro dela mesma. Existem exemplos clássicos da utilização de uma função recursiva, como por exemplo, pra calcular o módulo de um número. Ou então, a seqüência de Fibonacci.

Mas só abrindo um parênteses aqui... sempre que puder, não utilize uma função recursiva no seu script. Uma vez fiz uns testes com esses exemplos que citei acima. Utilizei funções recursivas e não-recursivas, e as recursivas perderam feio... mas feio mesmo no quesito "tempo de processamento".

Bom, é isso... abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

Como você faz para saber o tempo de processamento de um script Illidan ? Tem alguma opção em algum browser que permite isso, ou essas "diferenças" foram tão grandes que deu para perceber no carregamento normal da página?

Falows

Link para o comentário
Compartilhar em outros sites

  • 0

Eu testei o tempo das funções recursivas no PHP. Como eu disse, as recursivas perderam feio... e a diferença no tempo de processamento aumentava absurdamente conforme eu pedia pra calcular o módulo de um número mais alto.

Vou ver se acho alguma coisa aqui... aí eu posto pra vocês verem.

***** EDITANDO *****

Bom, fiz uns testes aqui em PHP mesmo... quem tiver como testar, vai ver como as funções recursivas não compensam. Eu não quero abominá-las aqui, já utilizei função recursiva, mas acho que devemos evitá-las sempre que pudermos.

Calculando o módulo de 1500 (que foi o último módulo que meu computador conseguiu calcular com a função recursiva), estes foram os resultados:

Função recursiva: 0,0179 segundos

Função normal: 0,0026 segundos

Tirando que, com a função não recursiva, eu consegui calcular um módulo maior que 1.000.000... (parei os testes aí, mas ela calcularia módulos de números maiores).

Até mais.

PS: Este foi o código que utilizei nos testes:

<?php

function getmicrotime() {

  list($usec, $sec) = explode(" ", microtime());

  return ((float)$usec + (float)$sec);

}

function moduloRec($n) {

    if ($n > 1) {

        $n *= moduloRec($n - 1);

    }

    return $n;

}

function modulo($n) {

    $mod = $n;

    while ($n > 1) {

        $n--;

        $mod *= $n;

    }

    return $mod;

}

$calcular = 1500;

$inicio = getMicrotime();

echo "<p> Função Normal:";

echo "<br />- Módulo de " . $calcular . ": " . modulo($calcular);

echo "<br />- Tempo: " . number_format((getMicrotime() - $inicio), 4, ",", ".") . " segundos </p>";

$inicio = getMicrotime();

echo "<p> Função Recursiva:";

echo "<br />- Módulo de " . $calcular . ": " . moduloRec($calcular);

echo "<br />- Tempo: " . number_format((getMicrotime() - $inicio), 4, ",", ".") . " segundos </p>";

?>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...