SóProvas


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

Acerca de programas aplicativos e das arquiteturas de
computadores, julgue os próximos itens.

Existem problemas cujo algoritmo de solução pode ser descrito em versões recursivas e iterativas. As recursivas tipicamente consomem mais recursos de memória e tempo de processamento; por isso, recomenda-se o uso das versões iterativas nos casos em que é exigido melhor desempenho no tempo de execução e no uso da memória.

Alternativas
Comentários
  • Todo programa escrito em algoritmo recursivo pode ser reescrito no modo iterativo. O uso de algoritmo recursivo consome mais memória que o iterativo, logo apresenta desempenho menor que o iterativo.
  • Um dia os compiladores serão espertos o suficiente pra tranformarem código recursivo em interativo, e o programador gozará dos benefícios de ambos (simplicidade e velocidade). Amém!
  • Os algortimos recursivos são mais elegantes e simples de serem escritos, e os iterativos são mais eficientes porque usam o mesmo conjunto de variáveis, já os recursivos criam todo um novo conjunto de variáveis a cada recursão do algoritmo, principalmente os algoritmos de recursão em calda. Executar algo é a última coisa que eles fazem.

    == Mais sobre recusrvidade ==

    Recursividade:

    • Toda função recursiva pode ser transformada em uma função iterativa, usando pilha.
    • Toda função iterativa pode ser descrita de forma recursiva sem uso da iteração.
    • Algoritmos recursivos tendem a utilizar mais o espaço de pilha (stack) que o espaço de memória ( Heap)
    • Uma função recursiva em cauda é assim chamada porque a última coisa que a função faz é chamar a si mesmo, como exemplo podemos ter o percurso de pós-ordem em árvores binárias.
    • Em geral, as chamadas recursivas são mais custosas que as iterativas.
    • O código recursivo é mais claro, o iterativo mais eficiente. Um bom compilador pode traduzir código recursivo em iterativo.
    • Na recursão em calda os valores do retorno da chamada não precisam ser armazenados na pilha.
    Função A( ) {
    instrução 1;
    instrução 2;
    A( ) ;
    }
    • Recursões podem ser diretas ou indiretas
      • Diretas: a função chama ela mesma
      • Indiretas: a função A( ) chama B ( ) que chama A( ) novamente, como acontece no reconhecimento de expressões nas linguagens livre de contexto.
    • As recursões são aninhadas quando uma chamada recursiva inclui como parâmetro outra chamada recursiva. (Ou ainda, é um tipo de recursão em que a chamada refere-se a si própria mais de uma vez)
  • Prezados,

    A recursividade é uma rotina que pode invocar a si mesma . Entretanto a recursividade precisa registrar o estado atual do processamento de maneira que ele possa continuar de onde parou após a conclusao de cada nova execução subordinada ao procedimento recursivo, com isso , há um consumo maior de tempo e memória.

    Portanto a questão está correta.