Skip to content

Commit 9d33cb5

Browse files
committed
adding fibonacci nth
1 parent c6370fa commit 9d33cb5

File tree

3 files changed

+50
-0
lines changed

3 files changed

+50
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@
104104
1. [Product Array Except Self](/product-array-except-self/index.test.js)
105105
1. [Best time to Buy and Sell](/best-time-to-buy-and-sell/index.test.js)
106106
1. [Tandem Bicycle](/tandem-bicycle/index.test.js)
107+
1. [Nth Fibonacci](/nth-fibonacci/index.test.js)
107108

108109
## Setup
109110

nth-fibonacci/index.js

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
function fibonacciNthRecursively(number, fibonacci = [0, 1], i = 2) {
2+
if (i > number) {
3+
return fibonacci[number - 1];
4+
} else {
5+
fibonacci.push(fibonacci[i - 1] + fibonacci[i - 2]);
6+
return fibonacciNthRecursively(number, fibonacci, i + 1);
7+
}
8+
}
9+
10+
function fibonacciNth(number) {
11+
let numbers = [0, 1];
12+
13+
for (let i = 2; i <= number; i++) {
14+
numbers.push(numbers[i - 1] + numbers[i - 2]);
15+
}
16+
17+
return numbers[number - 1] ;
18+
}
19+
20+
module.exports = {
21+
fibonacciNthRecursively,
22+
fibonacciNth
23+
}

nth-fibonacci/index.test.js

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
const { fibonacciNthRecursively, fibonacciNth } = require('.');
2+
3+
describe('Nth Fibonacci', () => {
4+
describe('recursively', () => {
5+
test.each([
6+
[1, 0],
7+
[3, 1],
8+
[2, 1],
9+
[6, 5],
10+
])('with %i',(input, expected) => {
11+
const result = fibonacciNthRecursively(input);
12+
expect(result).toEqual(expected);
13+
})
14+
});
15+
describe('iteratily', () => {
16+
test.each([
17+
[1, 0],
18+
[3, 1],
19+
[2, 1],
20+
[6, 5],
21+
])('with %i',(input, expected) => {
22+
const result = fibonacciNth(input);
23+
expect(result).toEqual(expected);
24+
})
25+
});
26+
});

0 commit comments

Comments
 (0)