diff --git a/10_fibonacci/fibonacci.js b/10_fibonacci/fibonacci.js index bb2c8cc..f1795db 100644 --- a/10_fibonacci/fibonacci.js +++ b/10_fibonacci/fibonacci.js @@ -1,5 +1,17 @@ -const fibonacci = function() { +const fibonacci = function (number) { + if (number < 0) return "OOPS"; + if (number === 0) return 0; + let prev1 = 1; + let prev2 = 0; + + for (let i = 2; i <= number; i++) { + let current = prev1 + prev2; + prev2 = prev1; + prev1 = current; + } + + return prev1; }; // Do not edit below this line diff --git a/10_fibonacci/fibonacci.spec.js b/10_fibonacci/fibonacci.spec.js index 7f62213..2312455 100644 --- a/10_fibonacci/fibonacci.spec.js +++ b/10_fibonacci/fibonacci.spec.js @@ -1,31 +1,31 @@ -const fibonacci = require('./fibonacci') +const fibonacci = require("./fibonacci"); -describe('fibonacci', () => { - test('4th fibonacci number is 3', () => { +describe("fibonacci", () => { + test("4th fibonacci number is 3", () => { expect(fibonacci(4)).toBe(3); }); - test.skip('6th fibonacci number is 8', () => { + test("6th fibonacci number is 8", () => { expect(fibonacci(6)).toBe(8); }); - test.skip('10th fibonacci number is 55', () => { + test("10th fibonacci number is 55", () => { expect(fibonacci(10)).toBe(55); }); - test.skip('15th fibonacci number is 610', () => { + test("15th fibonacci number is 610", () => { expect(fibonacci(15)).toBe(610); }); - test.skip('25th fibonacci number is 75025', () => { + test("25th fibonacci number is 75025", () => { expect(fibonacci(25)).toBe(75025); }); - test.skip('doesn\'t accept negatives', () => { + test("doesn't accept negatives", () => { expect(fibonacci(-25)).toBe("OOPS"); }); - test.skip('DOES accept strings', () => { + test("DOES accept strings", () => { expect(fibonacci("1")).toBe(1); }); - test.skip('DOES accept strings', () => { + test("DOES accept strings", () => { expect(fibonacci("2")).toBe(1); }); - test.skip('DOES accept strings', () => { + test("DOES accept strings", () => { expect(fibonacci("8")).toBe(21); }); });