SóProvas


ID
1645297
Banca
CESPE / CEBRASPE
Órgão
FUB
Ano
2015
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

A respeito de análise de algoritmos, programação estruturada e orientada a objetos e estruturas de dados, julgue o item a seguir.


Em um algoritmo que utilize o processo de recursão, é necessária a existência de uma condição de parada a fim de se evitar que o algoritmo entre em um loop.

Alternativas
Comentários
  • Achei que não houvesse problema em entrar em loop... O problema surge quando entramos em um loop infinito.
    Por ex: Uma função para resolver fatorial entra em loop mas tem uma condição de parada que é quando atingimos o valor 1.

    Alguém poderia comentar sobre? 

  • Para uma função ser recursiva é premissa que esta tenha um critério de parada. Uma função recursiva não é um loop e sim uma função que executa chamadas a si mesma até que o critério de parada seja detectado.

  • Solução recursiva do problema

    Eis uma solução recursiva do problema da seção anterior:


    int maximoR (int n, int v[])
    { 
       if (n == 1)
          return v[0];
       else {
          int x;
          x = maximoR (n-1, v);
          if (x > v[n-1])
             return x;
          else
             return v[n-1]; 
       }
    }

  • correto- ela vai chamar ela mesma até algo acontecer que interrompa as iterações. 

    usando exemplo classico:

    int factorial (int x){

    if (x >1){

    return x * (factorial (x-1));

    }else

    return 1;

    }

    A função factorial(x) chama ela mesma quando x >1. AO chamar ela mesma, havera decremento da var. Quando o valor var == 1, as iterações param. Sem o decremento, haveria um loop infinito. 

  • Força Guerreiro!!!!!!