SóProvas


ID
1191256
Banca
FGV
Órgão
DPE-RJ
Ano
2014
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Seja a função recursiva f definida como 


              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) é

Alternativas
Comentários
  • A função é recursiva pois fica chamando a si mesma, então devemos repeti - la até o b zerar e cair na primeira condição ,critério de parada, retornando o valor de a.

    f (30, 21) é:

    retorna f(21, 9(30 mod 21 = 1 resto 9))

    f(21, 9)

    retorna f(9, 3(21 mod 9 = 2 resto 3))

    f(9, 3)

    retorna f(3, 0(9 mod 3 = 3 resto 0))

    f(3, 0)

    Se b = 0 então retorna 3(valor de a)

    Resposta 3.

    Que Deus nos abençoe e nos proteja!

  • Prezados,

    Vamos analisar a recursão passo a passo:

    f(30,21) ->
      se 21 =  0 então
      senão
             retorna f(21, 3) ->
                          se 3 = 0 então
                          senão
                                  retorna f(3,0)
                                           se 0 = 0 entao
                                                  retorna 3

    Portanto a alternativa correta é a letra C


  • esse é o algoritmo do MDC de dois números. Pra achar o resultado vc só tem que decrementar até o menor termo e o retorno deste será o resultado:

    O algoritmo continua a e so retorna algo quando b==0 e esse valor não é usado pra nada, então o programa termina quando acontecer apenas 1 retorno.

    entao para a=30 e b = 21, vc vai apenas passando b como o primeiro termo e o segundo termo sendo o resto da divisao de a por b (30%21). Como não ha divisão exata é só subtrair a por b até que o resultado seja menor do que b(21):

    f(30,21) = f(21, (30%21)) =

    f(21, 9 ) =

    f(9,3) =

    f(3,0) => como b == 0 então retorna a que é 3. O valor 3 é então retornado por todas as chamadas anteriores do método que estavam aguardando a chamada recursiva aguardar para retornarem seu valor.

  • Força Guerreiro!!!!!!