-
f(8) = f(7) + f(6)
f(6) = f(5) + f(4)
f(4) = f(3) + f(2)
f(2) = f(1) + f(0) = 1 + 0 = 1
f(3) = f(2) + f(1) = 1 +1 = 2
f(4) = f(3) + f(2) = 2+ 1 = 3
f(5) = 3+2 = 5
f(6) = 5+3 = 8
f(7) = 8+5 = 13
f(8) = 13 +8 = 21
gabarito certo.
-
x(1) = 1
x(2) = 1 + 0 = 1
x(3) = 1 + 1 = 2
x(4) = 2 + 1 = 3
x(5) = 3 + 2 = 5
x(6) = 5 + 3 = 8
x(7) = 8 + 5 = 13
x(8) = 13 + 8 = 21
-
Prezados,
Se a função for executada passando o valor de n = 8, nenhum dos 3 primeiros ifs será acionado pois as condições serão sempre falsas , e o retorno será dado por :
return x(n-1) + x(n-2)
Vemos que ele entrará em uma recursão .
Não precisamos executar todos os passos , basta entender que essa recursão retornará um valor quando n for menor que zero, zero ou 1, então, para resolver a questão de forma simples , ao invés de executar a recursão de 8 a 0 , vou executar de 0 a 8 até entender todos os retornos.
long(0) retornará 0
long(1) retornará 1
long(2) retornará long(1) + long(0), ou seja , retornará 1
long(3) retornará long(2) + long(1), ou seja, retornará 2
long(4) retornará long(3) + long(2), ou seja, retornará 3
long(5) retornará long(4) + long(3), ou seja, retornará 5
long(6) retornará long(5) + long(4), ou seja, retornará 8
long(7) retornará long(6) + long(5), ou seja, retornará 13
long(8) retornará long(7) + long(6), ou seja, retornará 21
Portanto a questão está correta.
-
Gab. C
x(0)= 0
x(1)= 1
x(2)= x(1) + x(0) = 0+1 = 1
x(3)= x(2) + x(1) = 1+1 = 2
x(4)= x(3) + x(2) = 2+1 = 3
x(5)= x(4) + x(3) = 3+2 = 5
x(6)= x(5) + x(4) = 5+3 = 8
x(7)= x(6) + x(5) = 8+5 = 13
x(8)= x(7) + x(6) = 13+8 = 21
FONTE: PCF - Rafael Nogueira
-
Recursão em programação é a técnica de chamar uma função dentro dela mesma. No caso a função x retorna um valor do tipo long (número) e recebe como parametro uma variavel do tipo int de nome [n].
Dentro da função a varíavel [n] é avaliada por estruturas IF (SE) e caso verdadeira a checagem, retorna um valor. Caso todas as checagens sejam falsas se chama novamente 2 vezes ao final da função.
Podemos perceber que a cada iteração o valor passado por parametro [n] é subtraído, desta forma eventualmente a função irá passar 1 e 0 como parametro, retornando 1 e 0 respectivamente.
Uma função recursiva sempre deve ter uma regra de parada, do contrário entraria em um loop infinito até que consumisse toda a memória e travasse. Veja que a função somente se chama novamente caso [n] for maior que 1, do contrário somente retorna um valor parando a recursão e voltando como um bumerangue de volta a primeira iteração retornando os valores para finalizar o cálculo.
Espero ter ajudado a ilustrar melhor como funciona uma função recursiva.
Bons estudos pessoal!
-
Fibonacci: cada termo é igual a soma dos dois anteriores.
se começar a fazer os resultados menores perceberá isso:
n: 1 2 3 4 5 6 7 8
resultado: 1 1 2 3 5 8 13 21
Pelo programa sabemos que: x(4) = x(3) + x(2);
corresponde justamente a soma dos últimos 2 elementos da sequencia.
Observe que o programa se assegura que os dois primeiros termos da sequencia serão 1 e 1, com os dois últimos 'if's, sendo o primeiro if só será alcançado caso o usuário informe um n de valor negativo, o que seria um erro na lógica, retornando -1 como padrão para entrada inválida.
-
Força Guerreiro!!!!!!