Bom dia!
Galera prestei um concurso tempos atrás para desenvolvedor, tinha uma questão que me intrigou muito e até agora não consegui resolver, favor me ajudem neste problema abaixo:
Qual é o valor retornado pela função C apresentada a seguir, quando o parâmetro passado for o número 4(n=4)
Mas como assim, nunca ouvi falar neste de mesa?
como que é feito qual é a lógica que usa?
E
entanglement
Amigo, você viu a linha 3 do meu exemplo? Faça a mesma coisa para a linha 4.
“Teste de mesa” é uma coisa que você provavelmente deveria ter aprendido na escola.
É o seguinte: você fazer a mesma coisa que o computador faz, passo a passo, e anotar os resultados intermediários no papel.
romarcio
O grande lance desse Algoritimo é que vc trabalha com o que chamamos de Recursividade.
Isso, é quando dentro de um método, vc acaba chamando ele mesmo, o que acontece no seu Else.
Quando cai no else, o método é chamado novamente, dai ele é executada do inicio até retornar um valor para a chamada anterior, e assim por diante.
Para vc entender melhor e bom procurar algum material sobre recursividade.
n F(n)
1 1
2 2
3 F (n-1) + n * F (n-2) = F(2) + 3 * F(1) = 2 + 3 * 1 = 5
4 F (n-1) + n * F (n-2) = F(3) + 4 * F(2) = 3 + 4 * 2 = 11
pq o resultado do gabarito eh 13?
pmlm
phil.barreto:
4 F (n-1) + n * F (n-2) = F(3) + 4 * F(2) = 3 + 4 * 2 = 11
pq o resultado do gabarito eh 13?
Porque F(3) é 5 e não 3.
5 + 4 * 2 = 13
phil.barreto
ah sim
eh verdade
romarcio
pmlm:
phil.barreto:
4 F (n-1) + n * F (n-2) = F(3) + 4 * F(2) = 3 + 4 * 2 = 11
pq o resultado do gabarito eh 13?
Porque F(3) é 5 e não 3.
5 + 4 * 2 = 13
Como falei antes, é Recursividade. O método é chamado dentro dele mesmo.
Quando o N = 4, vamos para o ELSE. Lá dentro do else temos: F(n-1). Esse F(n-1) é a chamada do método. Aqui ele entra novamente no método, e vai continuar entrando até que o valor de N seja 1 ou 2.