0
respostas

Solução para calculo de sequência fibonacci

Espero ter compreendido o objetivo do exercício.

Solução com procedure:

CREATE OR REPLACE PROCEDURE CALCULA_SEQ_FIBONACCI
(
    p_INDICE IN FLOAT
)

AS
    v_N1 FLOAT := 0;
    v_N2 FLOAT := 1;
    v_RESP FLOAT := 0;
    v_COUNT FLOAT := 1;
    v_INDICE FLOAT := p_INDICE;

BEGIN
    CASE 
        WHEN v_INDICE <= 0 THEN RETURN; -- ÍNDICE COMEÇA EM 1
        WHEN v_INDICE = 1 THEN
            DBMS_OUTPUT.PUT_LINE(v_N1); -- NÚM IGUAL A 0
        WHEN v_INDICE > 1 THEN
            DBMS_OUTPUT.PUT_LINE(v_N1); -- NÚM IGUAL A 0
            DBMS_OUTPUT.PUT_LINE(v_N2); -- NÚM IGUAL A 
    ELSE
        DBMS_OUTPUT.PUT_LINE(v_N1);
        DBMS_OUTPUT.PUT_LINE(v_N2);
    END CASE;
    LOOP
        v_RESP := v_N1 + v_N2;
        v_N1 := v_N2;
        v_N2 := v_RESP;
        v_COUNT := v_COUNT + 1;
        DBMS_OUTPUT.PUT_LINE(v_RESP);
    EXIT WHEN v_COUNT >= v_INDICE;
    END LOOP;
END;

Teste da procedure:

SET SERVEROUT ON;
BEGIN
    CALCULA_SEQ_FIBONACCI(45);
END;

Solução com bloco anônimo:

SET SERVEROUTPUT ON;
DECLARE
    v_N1 FLOAT := 0;
    v_N2 FLOAT := 1;
    v_RESP FLOAT := 0;
    v_COUNT FLOAT := 1;
    v_STOP FLOAT := 0;

BEGIN
    DBMS_OUTPUT.PUT_LINE(v_N1);
    DBMS_OUTPUT.PUT_LINE(v_N2);
    LOOP
        v_RESP := v_N1 + v_N2;
        v_N1 := v_N2;
        v_N2 := v_RESP;
        v_COUNT := v_COUNT + 1;
        DBMS_OUTPUT.PUT_LINE(v_RESP);
    EXIT WHEN v_COUNT >= v_STOP;
    END LOOP;
END;

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR