Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
includeDaniel committed Jul 31, 2023
1 parent e2c403e commit 8dc6fad
Showing 1 changed file with 11 additions and 30 deletions.
41 changes: 11 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,42 +4,23 @@
[![npm version](https://img.shields.io/npm/v/@includedaniel/fibonacci.svg?style=flat)](https://www.npmjs.com/package/@includedaniel/fibonacci)
[![codecov](https://codecov.io/gh/includeDaniel/fibonacci/branch/main/graph/badge.svg?token=JZWXY20HCS)](https://codecov.io/gh/includeDaniel/fibonacci)

This is a JavaScript module that calculates the Fibonacci sequence up to a given number n using memoization. The Fibonacci sequence is a series of numbers in which each number is the sum of the two preceding ones, usually starting with 0 and 1.
Running tests:

## Instalation
- Run `yarn test` to execute the tests and export the reports to `/coverage` folder

To use the fibonacci function with memoization, use npm to install the package:
Running lint:

```npm
npm i @includedaniel/fibonacci
- Run `yarn lint` to execute the eslint to fix and find problems in your code
- want to know more about eslint commands? [Follow the link](https://eslint.org/docs/latest/use/command-line-interface)

```
Running prettier:

## Usage
- Run `yarn format` to format the code according to established standards
- Run `yarn type-check` to check the types in your code

To use the fibonacci function with memoization, require the module in your JavaScript file:
Running rollup:

```JavaScript
const fibonacci = require('./fibonacci');
- Run `yarn build` to execute the rollup
- [Link for commands line flags of rollup](https://rollupjs.org/command-line-interface/#command-line-flags)

const result = fibonacci(10);
console.log(result); // Output: 55
```

The fibonacci function takes two parameters:

.'n' (required): The number up to which the Fibonacci sequence should be calculated.
.'prev' (optional): A 'Map' object used for memoization, which stores previously calculated Fibonacci numbers to improve performance. If not provided, a new Map will be created internally.
If 'n' is a positive integer, the function will return the Fibonacci number at position 'n' in the sequence. If 'n' is less than or equal to 0, an error will be thrown.

## Memoization

Memoization is a technique that allows the function to remember (or cache) the results of previous function calls, so that if the function is called again with the same inputs, it can return the cached result instead of recalculating it. This can significantly improve the performance of the function, especially for recursive algorithms like the Fibonacci sequence.

In this implementation, a 'Map' object is used as the memoization cache. When the 'fibonacci' function is called with a particular value of 'n', it first checks if the memoization cache ('prev') already contains the result for that value. If so, it retrieves the result from the cache and returns it immediately. This avoids redundant calculations and improves the overall efficiency of the Fibonacci function.

If the result for the given value of 'n' is not found in the cache, the function calculates it by recursively calling itself for the previous two Fibonacci numbers ('fibonacci(n - 1, prev)' and 'fibonacci(n - 2, prev)'), and then adds the two results together. The calculated result is stored in the cache for future use before being returned.

## License

This project is licensed under the MIT License.

0 comments on commit 8dc6fad

Please sign in to comment.