Gabriel, seu entendimento está correto!
Uma outra forma de resolver essa questão seria utilizando uma estrutura de loop.
int fib(int n) {
if (n == 0) return 0;
if (n == 1) return 1;
int prev1 = 0;
int prev2 = 1;
int result = 0;
for (int i = 2; i <= n; i++) {
result = prev1 + prev2;
prev1 = prev2;
prev2 = result;
}
return result;
}
Primeiro, verifica se o número fornecido n é igual a 0 ou 1 e retorna 0 ou 1, respectivamente, caso seja verdadeiro.
Em seguida, inicializa as variáveis prev1 e prev2 com os valores iniciais da sequência Fibonacci (0 e 1). A variável result é usada para armazenar o resultado da soma dos dois números anteriores.
O loop começa em i = 2 porque já calculamos os casos base para 0 e 1. Em cada iteração do loop, result é atualizado para a soma de prev1 e prev2, prev1 é atualizado para o valor anterior de prev2, e prev2 é atualizado para o valor atual de result.
Ao final do loop, o valor de result será o número Fibonacci correspondente ao número n fornecido e é retornado como resultado da função. Este método iterativo é mais eficiente do que o método recursivo para calcular números Fibonacci grandes, pois evita a sobrecarga de chamadas de função.