SóProvas


ID
239617
Banca
CESPE / CEBRASPE
Órgão
ABIN
Ano
2010
Provas
Disciplina
Programação
Assuntos

Julgue os próximos itens, que tratam de conceitos de programação e
sua aplicação em linguagens e tecnologias.

Algoritmos recursivos normalmente têm menor tempo de resposta que seus equivalentes iterativos, mas as linguagens PHP e Javascript, por serem linguagens de script, não permitem nem necessitam de recursividade.

Alternativas
Comentários
  • A primeira parte está correta, sobre o tempo de resposta frente aos iterativos, porém erra na segunda parte ou dizer que não permitem nem necessitam de recursividade. Tanto PHP ou Javascript aceitam, tudo dependerá da forma que o programador deseje implementar.

    Complementando com as vantagens e desvantagens da recursão:
    Um programa recursivo é mais elegante e menor que a sua versão iterativa, além de exibir com maior clareza o processo utilizado, desde que o problema ou dados sejam naturalmente definidos através da recorrência. 
    Por outro lado, um programa recursivo exige mais espaço de memória e é mais lento do que a versão iterativa

    []s
  • A questão contém dois erros.

    1. Algoritmos recursivos normalmente têm MAIOR tempo de resposta que seus equivalentes iterativos.

    A implementação iterativa tende a ser ligeiramente mais rápida na prática do que a implementação recursiva, uma vez que uma implementação recursiva precisa registrar o estado atual do processamento de maneira que ela possa continuar de onde parou após a conclusão de cada nova execução subordinada do procedimento recursivo. Esta ação consome tempo e memória.

    Fonte: http://pt.wikipedia.org/wiki/Recursividade_%28ci%C3%AAncia_da_computa%C3%A7%C3%A3o%29

    2. PHP e Javascipt permitem recursividade.

    Portanto, item Errado.
  • errado. Exemplo de recursão em PHP:
    <?php

    //iterative factorial function

    function factorial($number) {

        $result = 1;

        while ($number > 0) {

            print "result = $result, number = $number\n";

            $result *= $number;

            $number--;

            }

        return $result;

    }

    ?>
  • O exemplo do comentário anterior mostra uma implementação não recursiva do cálculo do fatorial.


    A versão recursiva, ou seja, quando uma função chama ela mesma, ficaria assim:


    function fatorial($number) {
         if ( $number < 0 )
           // indicar que não existe fatorial de número negativo
           return null ;
         else if ( ($number == 0) or ($number == 1) )
           // o fatorial de 0 é 1; o fatorial de 1 é 1
           return 1 ;
         else
           // o fatorial de um número é ele próprio multiplicado pelo fatorial do número anterior (por exemplo 5! = 5 x 4! )
           return $number * fatorial( $number - 1 ) ;
       }



  • Prezados,

    Normalmente os métodos recursivos gastam mais recurso de processamento, e podem ter menor tempo de resposta, entretanto o PHP possui sim recursividade.

    Portanto a questão está errada.