Considere o seguinte programa em Python:
def f(n):
if n < 2:
return n
else:
return f(n-1) + f(n-2)
print(f (6))
Eu gostaria de entender pq o programa imprimi 8, pois eu entendo que 6-1+6-2=9
Me ajudem por favor! :(
Soluções para a tarefa
Aqui temos um exemplo de recursividade, ou seja, dentro da função há chamadas para ela mesma.
Precisamos então primeiro entender o que acontece na função f(n).
Quando chamamos f(n), é feita a verificação do valor de "n", caso este valor seja menor que 2, será retornado o próprio valor de "n".
Por outro lado, caso "n" seja maior ou igual a 2, a função retorna a soma de f(n-1) com f(n-2), ou seja, chamamos as funções f(n-1) e f(n-2).
Assim, dentro de f(n), há a possibilidade de chamarmos a própria função com parâmetros diferentes (n, n-1, n-2).
Perceba que só podemos determinar, inicialmente, os valores de f(1) e f(0) que valem, respectivamente, 1 e 0, mas, a partir deles, o programa é capaz de calcular f(6).
Podemos determinar de forma prática o valor de f(6) como segue:
Vale ressaltar, no entanto, que o programa executa de maneira diferente esse calculo, dado que os valores de f(2), f(3), f(4)... que vão sendo calculados não são armazenados/guardados. Na figura anexada, é possível ter uma noção da sequencia seguida pelo programa.
Resposta: imprime o número 8.
Explicação: