Informática, perguntado por soniamagosso, 7 meses atrás

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

Respondido por GeBEfte
6

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:

f(2)~=~f(1)~+~f(0)~=~1+0~=~\boxed{1}\\\\\\f(3)~=~f(2)~+~f(1)~=~1~+~1~=~\boxed{2}\\\\\\f(4)~=~f(3)~+~f(2)~=~2~+~1~=~\boxed{3}\\\\\\f(5)~=~f(4)~+~f(3)~=~3~+~2~=~\boxed{5}\\\\\\f(6)~=~f(5)~+~f(4)~=~5~+~3~=~\boxed{8}

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.

\Huge{\begin{array}{c}\Delta \tt{\!\!\!\!\!\!\,\,o}\!\!\!\!\!\!\!\!\:\,\perp\end{array}}Qualquer~d\acute{u}vida,~deixe~ um~coment\acute{a}rio

Anexos:

soniamagosso: Muito obrigada pela sua resposta, ainda não consegui compreender td sobre recursividade, mas já está muuuito mais claro. Agora é só complementar com mais estudos.
Respondido por fellipefintes2015
0

Resposta: imprime o número 8.

Explicação:

Perguntas interessantes