Questões de Concurso
Sobre recursividade em algoritmos e estrutura de dados
Foram encontradas 64 questões
Analise as afirmativas a seguir a respeito de algoritmos recursivos.
I. Diz-se que uma rotina é recursiva se a sua definição envolver uma chamada a ela mesma. Neste sentido, o termo recursão é equivalente ao termo indução utilizado por matemáticos.
II. Cada algoritmo recursivo possui um algoritmo iterativo equivalente e vice-versa, mas que pode ter mais ou menos complexidade em sua construção.
III. Uma função recursiva possui duas partes: caso base e caso recursivo.
IV. Um algoritmo pode ser chamado de iterativo quando ele requer a repetição implícita de um processo até que determinada condição seja satisfeita.
V. A recursividade possibilita a escrita de um código mais enxuto, com maior legibilidade e simplicidade.
Assinale a alternativa que possui alguma afirmação INCORRETA.
Com relação às estruturas de controle em programas de computador, julgue o item subsecutivo.
A chamada de uma função para execução é feita citando-se o
seu identificador no meio de uma expressão. Uma função é dita
recursiva quando chama ela própria.
Sobre o conceito de Algoritmos Recursivos, analise as afirmações abaixo e, a seguir, assinale a alternativa correta.
I. Um programa tem um número limitado de procedimentos recursivos.
II. Recursividade é utilizada exclusivamente quando não se sabe solucionar um problema de maneira imediata, então é realizada a divisão em problemas menores para alcançar o resultado desejado.
III. Todos os problemas computacionais resolvidos de maneira iterativa gastam mais memória que se resolvidos de forma recursiva.
Uma função recursiva pela cauda sempre possui um equivalente iterativo direto.
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.
Uma boa lógica de programação é fundamental para que os algoritmos sejam bem desenvolvidos e, consequentemente, os programas bem implementados, claro que se agregando o conhecimento da sintaxe da linguagem de programação escolhida. Dessa forma, pensando-se em estruturas de algumas implementações, considere o seguinte trecho de código:
int fibonacci (int N)
{
if (N <= 1)
return N;
else
return ( fibonacci(N - 1) + fibonacci(N - 2) );
}
Pode-se afirmar, a partir do código anteriormente apresentado, que:
Considere o seguinte trecho de código.
intn f;
if(n==l) {
return n*n;}
else {
f = F(n-l) * n;
return f;
}
}Da forma com que essa função foi implementada, para uma entrada "n" igual a 4, pode-se dizer que a função:

Após a execução, a função retornará um valor igual a:
algoritmo "MDA"
var
X, W, N : inteiro
funcao FF(Y:inteiro):inteiro
inicio
N <- N + 1|
se Y < 2 entao
retorne 1
senao
retorne Y * FF(Y-1)
fimse
fimfuncao
inicio
X <-5
N <-0
W <- FF(X)
W <-W-50
escreval(W,N)
fimalgoritmo
Após a execução, o algoritmo, os valores de W e N serão, respectivamente:

Após a execução, os valores de W, F(N) e K serão, respectivamente:
f(a,b) se b = 0 então retorna a senão retorna f(b, a MOD b)
onde x MOD y é o resto da divisão de x por y. O valor de f (30, 21) é
f(a,b)
se b = 0 ehtão
retorna a
senão
retorna f(b, a MOD b)
onde x MOD y é o resto da divisão de x por y. O valor de f (30, 21)é


Após a execução, o valor da variável BARRA e o de retorno da função serão, respectivamente:




As lacunas são correta e, respectivamente, preenchidas por: