Questões sobre Recursão
Questão 1
O que é uma função recursiva em Python?A.
Uma função que chama a si mesma durante sua execução. B.
Uma função que pode ser chamada apenas uma vez. C.
Uma função que não possui parâmetros. D.
Uma função que sempre retorna uma String.
Questão 2
Qual é a principal característica de uma função recursiva?A.
Ela chama outra função obrigatoriamente. B.
Ela chama a si mesma. C.
Ela não pode possuir parâmetros. D.
Ela não pode utilizar `return`.
Questão 3
Analise o código abaixo. Qual é a característica que torna essa função recursiva?
A.
A função possui um parâmetro. B.
A função utiliza um `if`. C.
A função chama `contar` dentro de seu próprio corpo. D.
A função utiliza `print`.
def contar(n):
if n == 0:
return
print(n)
contar(n - 1)
Questão 4
Uma função recursiva normalmente precisa de uma condição que determine quando a recursão deve parar. Essa condição é chamada de:A.
Caso inicial. B.
Caso base. C.
Caso final. D.
Caso padrão.
Questão 5
Analise o código abaixo. Qual parte representa o caso base?
A.
`print(n)` B.
`contar(n - 1)` C.
`if n == 0:` D.
`def contar(n):`
def contar(n):
if n == 0:
return
print(n)
contar(n - 1)
Questão 6
Analise o código abaixo. O que será impresso?
A.
1, 2, 3 B.
3, 2, 1 C.
3, 2, 1, 0 D.
0, 1, 2, 3
def contar(n):
if n == 0:
return
print(n)
contar(n - 1)
contar(3)
Questão 7
Analise o código abaixo. Quantas vezes a função `contar` é chamada?
A.
2 vezes. B.
3 vezes. C.
4 vezes. D.
5 vezes.
def contar(n):
if n == 0:
return
print(n)
contar(n - 1)
contar(3)
Questão 8
Analise o código abaixo. O que acontece quando `n` é igual a `0`?
A.
A função chama `contar(-1)`. B.
A função é encerrada pelo `return`. C.
A função imprime `0`. D.
A função começa novamente com `n = 3`.
def contar(n):
if n == 0:
return
print(n)
contar(n - 1)
Questão 9
O que pode acontecer se uma função recursiva não possuir uma condição adequada para interromper as chamadas?A.
A função será executada apenas uma vez. B.
A função poderá realizar chamadas recursivas indefinidamente. C.
O Python transforma automaticamente a função em um laço. D.
A função sempre retornará `None`.
Questão 10
Analise o código abaixo. Qual valor será retornado?
A.
3 B.
6 C.
9 D.
12
def fatorial(n):
if n == 0:
return 1
return n * fatorial(n - 1)
print(fatorial(3))
Questão 11
No código abaixo, qual é o caso base da função `fatorial`?
A.
`return n` B.
`return n * fatorial(n - 1)` C.
`if n == 0:` D.
`fatorial(n - 1)`
def fatorial(n):
if n == 0:
return 1
return n * fatorial(n - 1)
Questão 12
Analise o código abaixo. Qual é a chamada recursiva?
A.
`fatorial(n)` B.
`fatorial(n - 1)` C.
`return 1` D.
`if n == 0`
def fatorial(n):
if n == 0:
return 1
return n * fatorial(n - 1)
Questão 13
Analise o código abaixo. Qual será a primeira chamada realizada pela função?
A.
`fatorial(0)` B.
`fatorial(1)` C.
`fatorial(3)` D.
`fatorial(4)`
def fatorial(n):
if n == 0:
return 1
return n * fatorial(n - 1)
print(fatorial(4))
Questão 14
Analise o código abaixo. Qual será a sequência de chamadas até chegar ao caso base?
A.
`3 → 2 → 1 → 0` B.
`3 → 1 → 0` C.
`0 → 1 → 2 → 3` D.
`3 → 2 → 0`
def contar(n):
if n == 0:
return
contar(n - 1)
contar(3)
Questão 15
Analise o código abaixo. O que será impresso?
A.
5, 4, 3, 2, 1 B.
1, 2, 3, 4, 5 C.
5, 4, 3, 2, 1, 0 D.
0, 1, 2, 3, 4, 5
def contar(n):
if n == 0:
return
print(n)
contar(n - 1)
contar(5)
Questão 16
Analise o código abaixo. O que será impresso?
A.
3, 2, 1 B.
1, 2, 3 C.
3, 1, 2 D.
0, 1, 2, 3
def contar(n):
if n == 0:
return
contar(n - 1)
print(n)
contar(3)
Questão 17
Analise o código abaixo. Qual será o resultado?
A.
4 B.
6 C.
10 D.
16
def soma(n):
if n == 0:
return 0
return n + soma(n - 1)
print(soma(4))
Questão 18
No código abaixo, qual valor é retornado pelo caso base?
A.
`0` B.
`1` C.
`n` D.
`n - 1`
def soma(n):
if n == 0:
return 0
return n + soma(n - 1)
Questão 19
Analise o código abaixo. Quantas chamadas recursivas são realizadas durante a execução de `soma(4)`?
A.
2 B.
3 C.
4 D.
5
def soma(n):
if n == 0:
return 0
return n + soma(n - 1)
print(soma(4))
Questão 20
Analise o código abaixo. Qual afirmação está correta?
A.
A função não é recursiva porque possui um `return`. B.
A função é recursiva porque chama `dobro` dentro de seu próprio corpo. C.
A função é recursiva somente quando `n` é negativo. D.
A função não possui caso base.
def dobro(n):
if n == 0:
return 0
return 2 + dobro(n - 1)
Questão 21
Analise o código abaixo. Qual será o valor retornado?
A.
2 B.
3 C.
5 D.
6
def dobro(n):
if n == 0:
return 0
return 2 + dobro(n - 1)
print(dobro(3))
Questão 22
Qual dos códigos abaixo apresenta corretamente uma função recursiva com um caso base?A.
B.
C.
D.
def contar(n):
if n == 0:
return
contar(n - 1)
def contar(n):
contar(n - 1)
def contar(n):
print(n)
def contar(n):
return n
Questão 23
Analise o código abaixo. O que será impresso?
A.
4 B.
10 C.
16 D.
24
def fatorial(n):
if n == 1:
return 1
return n * fatorial(n - 1)
print(fatorial(4))
Questão 24
Considere a execução de fatorial(3):
Qual sequência representa corretamente as chamadas realizadas?A.
fatorial(3) → fatorial(2) → fatorial(1) B.
fatorial(3) → fatorial(1) → fatorial(2) C.
fatorial(1) → fatorial(2) → fatorial(3) D.
fatorial(3) → fatorial(0) → fatorial(1)
def fatorial(n):
if n == 1:
return 1
return n * fatorial(n - 1)
Questão 25
Em uma função recursiva, qual é a função do caso base?A.
Realizar a primeira chamada da função. B.
Aumentar o valor do parâmetro a cada chamada. C.
Determinar uma condição para interromper a recursão. D.
Fazer a função chamar outra função.
Questão 26
Analise o código abaixo. Qual será o resultado?
A.
5 B.
6 C.
8 D.
9
def potencia(base, expoente):
if expoente == 0:
return 1
return base * potencia(base, expoente - 1)
print(potencia(2, 3))
Questão 27
No código abaixo, o que acontece quando expoente chega a 0?
A.
Uma nova chamada é realizada com expoente = -1. B.
A função retorna 1 e não realiza outra chamada recursiva. C.
A função retorna 0. D.
A função reinicia com o valor original do expoente.
def potencia(base, expoente):
if expoente == 0:
return 1
return base * potencia(base, expoente - 1)