Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Minha resolução

Para que o SCRIPT pare apenas quando a posição do último número da sequência for maior que @SEQUENCIA precisamos tirar a seguinte linha do SCRIPT:

IF @NUMERO_ATUAL > @LIMITE_MAXIMO BREAK;

E também podemos tirar a declaração @LIMITE_MAXIMO e não precisamos atribuir um valor para ela.

Assim o código final ficaria:

DECLARE @NUMERO_ANTERIOR2 INT;
DECLARE @NUMERO_ANTERIOR1 INT;
DECLARE @NUMERO_ATUAL INT;
DECLARE @SEQUENCIA INT;
DECLARE @CONTADOR_SEQUENCIA INT;

SET @SEQUENCIA = 44;
SET @CONTADOR_SEQUENCIA = 3;

SET @NUMERO_ANTERIOR2 = 0;
SET @NUMERO_ANTERIOR1 = 1;

PRINT 'POSIÇÃO 1 --> 0';
PRINT 'POSIÇÃO 2 --> 1';

WHILE @CONTADOR_SEQUENCIA <= @SEQUENCIA
BEGIN
      SET @NUMERO_ATUAL = @NUMERO_ANTERIOR2 + @NUMERO_ANTERIOR1;
      
      PRINT 'POSIÇÃO ' + TRIM(STR(@CONTADOR_SEQUENCIA,10,0)) + ' --> ' + TRIM(STR(@NUMERO_ATUAL, 10,0));
      
      SET  @NUMERO_ANTERIOR2 = @NUMERO_ANTERIOR1;
      SET @NUMERO_ANTERIOR1 = @NUMERO_ATUAL;
      SET @CONTADOR_SEQUENCIA = @CONTADOR_SEQUENCIA + 1;
END;

Resultado do SCRIPT:

POSIÇÃO 39 --> 39088169
POSIÇÃO 40 --> 63245986
POSIÇÃO 41 --> 102334155
POSIÇÃO 42 --> 165580141
POSIÇÃO 43 --> 267914296
POSIÇÃO 44 --> 433494437

Então o número FIBONACCI da posição 44 é 433494437

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta
solução!

Oi, Ycaro! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Sua explicação ficou muito clara e o ajuste que fez no WHILE mostra boa compreensão da lógica de parada. Retirar a variável @LIMITE_MAXIMO realmente foi uma boa ideia para simplificar o código sem comprometer o resultado.

Uma dica interessante para o futuro é testar o uso do comando FORMAT() para exibir os números de forma mais legível, por exemplo com separadores de milhar:


PRINT FORMAT(@NUMERO_ATUAL, 'N0');

Esse comando formata o número sem casas decimais, facilitando a leitura de valores grandes.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!