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!
Fala concurseiro (a), professor Martins na área...
Essa questão é sobre recursividade, basta lembrar que uma função recursiva ela chama ela mesmo dentro de sua função. Vejamos o algoritmo da questão:
f(a,b)
se b = 0 então
retorna a
senão
retorna f(b, a MOD b)
Observe que na última linha é chamada a própria função para continuidade do algoritmo. A questão te dá os valores a=30 e b=21, agora basta executar o passo a passo do algoritmo. Vamos lá:
1ª Rodada: f(30,21)
21 = 0? -> Não, então vai para o senão
Retorna a ser executado o algoritmo, os valores de a da função principal será b anterior e o valor de b será o resto da divisão de a por b (MOD), então para a função inicial os valores serão:
b = 21,a MOD b=9 (30/21 possui resto 9) -> f(b, a MOD b)
f(21,9)
2ª Rodada: f(21,9) ->Observe os valores finais da primeira rodada
9 = 0? -> Não, então vai para o senão
Retorna a ser executado o algoritmo, os valores de a da função principal será b anterior e o valor de b será o resto da divisão de a por b (MOD), então para a função inicial os valores serão:
b = 9, a MOD b=3 (21/9 possui resto 3) -> f(b, a MOD b)
f(9,3)
3º Rodada: f(9,3) ->Observe os valores finais da primeira rodada
3 = 0? -> Não, então vai para o senão
Retorna a ser executado o algoritmo, os valores de a da função principal será b anterior e o valor de b será o resto da divisão de a por b (MOD), então para a função inicial os valores serão:
b = 3, a MOD b=0 (9/3 possui resto 0) -> f(b, a MOD b)
f(3,0)
4º Rodada: f(3,0) ->Observe os valores finais da primeira rodada
0 = 0? -> Sim, então:
Retorna a = 3
Resposta então LETRA C
Vamos juntos ser aprovados, guerreiros(as)!
Me segue no insta para mais dicas @profmartinz