2026-08-01 19:47:43 -04:00
2026-08-01 19:47:43 -04:00
2026-08-01 19:47:43 -04:00
2026-08-01 19:47:43 -04:00
2026-08-01 19:47:43 -04:00
2026-08-01 19:47:43 -04:00
2026-08-01 19:47:43 -04:00
2026-08-01 19:47:43 -04:00

Fibonacci Number Generator (O(1) Runtime)

This project demonstrates a Fibonacci number generator with O(1) lookup time using a precomputed lookup table approach.

Implementation Overview

The solution uses a precomputed lookup table to achieve constant-time access to Fibonacci numbers:

Key Features:

  • O(1) Runtime: Accessing any Fibonacci number takes constant time
  • Memory Efficient: Stores only necessary values in memory
  • Error Handling: Validates input indices and handles out-of-range requests
  • Windows Compatible: Uses Windows system calls for console output

Approach Explanation

Instead of calculating Fibonacci numbers through iteration or recursion (which would be O(n) or O(2^n)), this implementation:

  1. Precomputes Fibonacci numbers up to a certain limit (50 numbers in this case)
  2. Stores them in a lookup table (array)
  3. Provides constant-time access by simply indexing into the array

This approach trades memory for speed - we use more memory to store precomputed values, but achieve O(1) lookup time.

Files Included

1. fibonacci.asm

  • AMD64 assembly implementation using Windows syscalls
  • Uses lookup table for O(1) access
  • Includes Windows API calls for console output

2. fibonacci.nasm

  • Alternative NASM version of the Fibonacci generator
  • Same functionality as the .asm file but with NASM syntax

3. fibonacci.cpp

  • C++ demonstration showing the same lookup table concept
  • Easier to compile and run
  • Demonstrates O(1) access pattern

How O(1) is Achieved

The O(1) runtime comes from:

  1. Precomputation: All Fibonacci numbers are calculated once at compile time
  2. Direct Access: The lookup table allows direct indexing without computation
  3. Constant Time Operations: Array access in memory takes constant time regardless of index

Usage

To run the C++ version (if you have a compiler):

g++ -o fibonacci.exe fibonacci.cpp
fibonacci.exe

The program will output Fibonacci numbers at various indices, demonstrating that all lookups are O(1) time complexity.

Limitations

  • The lookup table is limited to precomputed values (50 in this case)
  • For larger indices, a different approach would be needed
  • Memory usage increases with the number of precomputed values

This implementation shows how algorithmic design can optimize for specific use cases - trading memory for time complexity when constant-time access is required.

S
Description
No description provided
Readme
30 KiB
Languages
Assembly 61.1%
Batchfile 20.8%
C++ 18.1%