MO417 - QUESTÃO PARA A PROVA ORAL
Número:
Enunciado: No desenvolvimento
de um programa estatístico, um programador deparou-se com a necessidade
de somar os fatoriais de dois números m e n (i.e. efetuar m! + n!). Como uma primeira solução, ele resolveu utilizar sua velha função CALCULA_FATORIAL(n), aplicando-a dentro do procedimento CALCULA_SOMA_FATORIAIS(m, n):
01. CALCULA_FATORIAL(n) // n é um número natural02. se n <= 1
03. retorna 1
04. senão retorna CALCULA_FATORIAL(n - 1) * n
01. CALCULA_SOMA_FATORIAIS(m, n) // m e n são números naturais
02. retorna CALCULA_FATORIAL(m) + CALCULA_FATORIAL(n)
Após uma revisão de código, outro programador decidiu modificar o programa, abrindo mão da função CALCULA_FATORIAL(n). Para tanto, ele propôs o novo procedimento:
01. CALCULA_SOMA_FATORIAIS_MODIF(m, n) // m e n são números naturais
02. f = novo arranjo[0..max(m, n)]
03. // f é um arranjo de 0 a m ou n, o maior dos dois
04. f[0] = f[1] = 1
05. para i = 2 até max(m, n)
06. f[i] = f[i - 1] * i
07. retorna f[m] + f[n]
Sobre esta situação, considere as seguintes afirmativas:
- I. O procedimento CALCULA_SOMA_FATORIAIS(m, n) realiza m + n - 2 multiplicações, para m e n maiores que zero.
- II. O procedimento CALCULA_SOMA_FATORIAIS(m, n) realiza k multiplicações, com k = Θ(m) + Θ(n).
- III. O procedimento CALCULA_SOMA_FATORIAIS_MODIF(m, n) realiza max(m, n) - 1 multiplicações, para m e n maiores que zero.
- IV. O procedimento CALCULA_SOMA_FATORIAIS_MODIF(m, n) realiza k multiplicações, com k = Θ(max(m, n)).
- V. Dado que o número de multiplicações realizadas por CALCULA_SOMA_FATORIAIS(m, n) e CALCULA_SOMA_FATORIAIS_MODIF(m, n) é linear com relação aos módulos de m e n, não faz qualquer diferença utilizar um ou outro procedimento.
Escolha a alternativa CORRETA:
- Todas as afirmativas são verdadeiras.
- Apenas as afirmativas I e II são verdadeiras.
- Apenas as afirmativas III e IV são verdadeiras.
- Apenas a afirmativa V é falsa.
- N.D.A.
Ideia original de: Daniel Henriques Moreira
Nenhum comentário:
Postar um comentário