PLSQL Program to find Fibonacci Series

"PLSQL Fibonacci series program displaying results on a SQL console."

The Fibonacci series is a sequence of numbers where each number is the sum of the two preceding ones, starting from 0 and 1. This sequence has numerous applications in mathematics and computer science. In this article, we will explore how to write a PL/SQL program to find the Fibonacci series efficiently.


What is the Fibonacci Series?

The Fibonacci sequence follows this pattern:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

Mathematically, the formula for Fibonacci numbers is:

F(n) = F(n-1) + F(n-2), where F(0) = 0 and F(1) = 1

PL/SQL provides an efficient way to generate this sequence using loops or recursion.


PLSQL Program to Generate Fibonacci Series Using a Loop

Below is a PL/SQL program to generate Fibonacci numbers up to a given limit using a loop:

DECLARE
  num1 NUMBER := 0;
  num2 NUMBER := 1;
  temp NUMBER;
  counter NUMBER := 10; -- Change this to generate more terms
BEGIN
  DBMS_OUTPUT.PUT_LINE('Fibonacci Series:');
  DBMS_OUTPUT.PUT_LINE(num1);
  DBMS_OUTPUT.PUT_LINE(num2);
  
  FOR i IN 3..counter LOOP
    temp := num1 + num2;
    DBMS_OUTPUT.PUT_LINE(temp);
    num1 := num2;
    num2 := temp;
  END LOOP;
END;
/

Explanation:

  • We initialize num1 as 0 and num2 as 1.
  • A loop runs from 3 to the desired count.
  • Inside the loop, we calculate the next Fibonacci number and update num1 and num2.

PLSQL Program to Generate Fibonacci Series Using Recursion

CREATE OR REPLACE FUNCTION fibonacci(n IN NUMBER) RETURN NUMBER IS
BEGIN
  IF n = 0 THEN RETURN 0;
  ELSIF n = 1 THEN RETURN 1;
  ELSE RETURN fibonacci(n-1) + fibonacci(n-2);
  END IF;
END fibonacci;
/

DECLARE
  n NUMBER := 10; -- Change this for more terms
BEGIN
  FOR i IN 0..n-1 LOOP
    DBMS_OUTPUT.PUT_LINE(fibonacci(i));
  END LOOP;
END;
/

Explanation:

  • The function fibonacci(n) calculates the Fibonacci number recursively.
  • The anonymous block calls this function in a loop to print the sequence.

Performance Considerations

  • Loop-based approach is more efficient as recursion in PL/SQL can lead to stack overflow for large inputs.
  • Using a table to store Fibonacci numbers can optimize performance.
CREATE TABLE fibonacci_numbers (term NUMBER, value NUMBER);

DECLARE
  num1 NUMBER := 0;
  num2 NUMBER := 1;
  temp NUMBER;
  counter NUMBER := 10;
BEGIN
  INSERT INTO fibonacci_numbers VALUES (1, num1);
  INSERT INTO fibonacci_numbers VALUES (2, num2);

  FOR i IN 3..counter LOOP
    temp := num1 + num2;
    INSERT INTO fibonacci_numbers VALUES (i, temp);
    num1 := num2;
    num2 := temp;
  END LOOP;
  COMMIT;
END;
/

This approach allows retrieving Fibonacci numbers from the database efficiently:

SELECT * FROM fibonacci_numbers;

Applications of Fibonacci Series

  • Algorithm design (Dynamic Programming, Divide and Conquer)
  • Stock market analysis (Fibonacci Retracement)
  • Computer graphics (Fractals, Recursive Patterns)
  • Nature & science (Golden Ratio, Growth Patterns)

Conclusion

We have explored multiple PL/SQL programs to find the Fibonacci series using loops, recursion, and database storage. The loop-based approach is optimal for performance, while recursion helps in understanding the logic. Using a database table provides a structured way to store and retrieve values.

Start implementing Fibonacci series in PL/SQL and enhance your SQL skills! 🚀

For more SQL-related discussions, visit our SQL Queries Community. Also, check out this comprehensive guide on Fibonacci Sequence – MathWorld to deepen your understanding of Fibonacci numbers.