From b81d7d03402d527648cff27542ccf4ee06a5303f Mon Sep 17 00:00:00 2001 From: Nikita Revenco <154856872+nikitarevenco@users.noreply.github.com> Date: Fri, 26 Apr 2024 16:17:37 +0100 Subject: [PATCH 1/6] feat: create explanation of exercise for recursive fibonacci --- 21_recursiveFibonacci/README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 21_recursiveFibonacci/README.md diff --git a/21_recursiveFibonacci/README.md b/21_recursiveFibonacci/README.md new file mode 100644 index 00000000000..d83f5427d1a --- /dev/null +++ b/21_recursiveFibonacci/README.md @@ -0,0 +1,14 @@ +# Exercise 13 - recursiveFibonacci + +Write a recursive function `recursiveFibonacci` that takes a number `n` and returns an array +containing that many numbers from the Fibonacci sequence. + +You should already be familiar of what the fibonacci series is from an earlier exercise, but in case you have forgotten, each term in a fibonacci series is defined as the sum of the previous two terms. + +The first term of the fibonacci series is `1` and so is the second term `1` too. From there, we can find the rest of the fibonacci series. + +An example: + +```javascript +recursiveFibonacci(8) // [0, 1, 1, 2, 3, 5, 8, 13] +``` From 8e1cd9dbf4dd889f39faef8852d3d4c3db64a19d Mon Sep 17 00:00:00 2001 From: Nikita Revenco <154856872+nikitarevenco@users.noreply.github.com> Date: Fri, 26 Apr 2024 16:18:01 +0100 Subject: [PATCH 2/6] feat: create exercise boilerplate for fibonacci --- 21_recursiveFibonacci/recursiveFibonacci.js | 6 +++ .../recursiveFibonacci.spec.js | 15 +++++++ .../recursiveFibonacci-solution.spec.js | 43 +++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 21_recursiveFibonacci/recursiveFibonacci.js create mode 100644 21_recursiveFibonacci/recursiveFibonacci.spec.js create mode 100644 21_recursiveFibonacci/solution/recursiveFibonacci-solution.spec.js diff --git a/21_recursiveFibonacci/recursiveFibonacci.js b/21_recursiveFibonacci/recursiveFibonacci.js new file mode 100644 index 00000000000..1794c906d91 --- /dev/null +++ b/21_recursiveFibonacci/recursiveFibonacci.js @@ -0,0 +1,6 @@ +const recursiveFibonacci = function() { + +}; + +// Do not edit below this line +module.exports = recursiveFibonacci; diff --git a/21_recursiveFibonacci/recursiveFibonacci.spec.js b/21_recursiveFibonacci/recursiveFibonacci.spec.js new file mode 100644 index 00000000000..80cdeb4ef29 --- /dev/null +++ b/21_recursiveFibonacci/recursiveFibonacci.spec.js @@ -0,0 +1,15 @@ +const recursiveFibonacci = require('./recursiveFibonacci'); + +describe('recursiveFibonacci', () => { + test('First test description', () => { + // Replace this comment with any other necessary code, and update the expect line as necessary + + expect(recursiveFibonacci()).toBe(''); + }); + + test.skip('Second test description', () => { + // Replace this comment with any other necessary code, and update the expect line as necessary + + expect(recursiveFibonacci()).toBe(''); + }); +}); diff --git a/21_recursiveFibonacci/solution/recursiveFibonacci-solution.spec.js b/21_recursiveFibonacci/solution/recursiveFibonacci-solution.spec.js new file mode 100644 index 00000000000..3d26e88fe42 --- /dev/null +++ b/21_recursiveFibonacci/solution/recursiveFibonacci-solution.spec.js @@ -0,0 +1,43 @@ +const recursiveFibonacci = require('./recursiveFibonacci-solution'); + +describe('recursiveFibonacci', () => { + test('Gets 1 fibonacci number', () => { + expect(recursiveFibonacci(1)).toBe([1]); + }); + + test('Gets 2 fibonacci number', () => { + expect(recursiveFibonacci(2)).toBe([1, 1]); + }); + + test('Gets 3 fibonacci number', () => { + expect(recursiveFibonacci(3)).toBe([1, 1]); + }); + + test('Gets 4 fibonacci number', () => { + expect(recursiveFibonacci(4)).toBe([1, 1]); + }); + + test('Gets 6 fibonacci number', () => { + expect(recursiveFibonacci(6)).toBe([1, 1]); + }); + + test('Gets 10 fibonacci number', () => { + expect(recursiveFibonacci(10)).toBe([1, 1]); + }); + + test('Gets 12 fibonacci number', () => { + expect(recursiveFibonacci(12)).toBe([1, 1]); + }); + + test('Gets 16 fibonacci number', () => { + expect(recursiveFibonacci(16)).toBe([1, 1]); + }); + + test('Gets 20 fibonacci numbers', () => { + expect(recursiveFibonacci(20)).toBe([1, 1]); + }); + + test('Gets 22 fibonacci numbers', () => { + expect(recursiveFibonacci(22)).toBe([1, 1]); + }); +}); From d998a77a7f3ef709b47983f48fb5b442c31f3732 Mon Sep 17 00:00:00 2001 From: Nikita Revenco <154856872+nikitarevenco@users.noreply.github.com> Date: Fri, 26 Apr 2024 16:18:11 +0100 Subject: [PATCH 3/6] feat: create solution for fibonacci recursive --- .../solution/recursiveFibonacci-solution.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 21_recursiveFibonacci/solution/recursiveFibonacci-solution.js diff --git a/21_recursiveFibonacci/solution/recursiveFibonacci-solution.js b/21_recursiveFibonacci/solution/recursiveFibonacci-solution.js new file mode 100644 index 00000000000..a95da8bdaee --- /dev/null +++ b/21_recursiveFibonacci/solution/recursiveFibonacci-solution.js @@ -0,0 +1,18 @@ +const recursiveFibonacci = function (n) { + switch (n) { + case 1: + return [1]; + case 2: + return [1, 1]; + } + + const previousSolution = recursiveFibonacci(n - 1); + + return [ + ...previousSolution, + previousSolution.at(-1) + previousSolution.at(-2), + ]; +}; + +// Do not edit below this line +module.exports = recursiveFibonacci; From 8dccd845c417c599cb8a34ec433e34b4414219ee Mon Sep 17 00:00:00 2001 From: Nikita Revenco <154856872+nikitarevenco@users.noreply.github.com> Date: Fri, 26 Apr 2024 20:50:15 +0100 Subject: [PATCH 4/6] feat: format readme for exercise --- 21_recursiveFibonacci/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/21_recursiveFibonacci/README.md b/21_recursiveFibonacci/README.md index d83f5427d1a..79324d358c8 100644 --- a/21_recursiveFibonacci/README.md +++ b/21_recursiveFibonacci/README.md @@ -1,14 +1,14 @@ # Exercise 13 - recursiveFibonacci Write a recursive function `recursiveFibonacci` that takes a number `n` and returns an array -containing that many numbers from the Fibonacci sequence. +containing that many numbers from the Fibonacci sequence. -You should already be familiar of what the fibonacci series is from an earlier exercise, but in case you have forgotten, each term in a fibonacci series is defined as the sum of the previous two terms. +You should already be familiar of what the fibonacci series is from an earlier exercise, but in case you have forgotten, each term in a fibonacci series is defined as the sum of the previous two terms. The first term of the fibonacci series is `1` and so is the second term `1` too. From there, we can find the rest of the fibonacci series. An example: ```javascript -recursiveFibonacci(8) // [0, 1, 1, 2, 3, 5, 8, 13] +recursiveFibonacci(8); // [0, 1, 1, 2, 3, 5, 8, 13] ``` From 0312ebdc974c79c0d15acff0ff2f3a8dd981d678 Mon Sep 17 00:00:00 2001 From: Nikita Revenco <154856872+nikitarevenco@users.noreply.github.com> Date: Fri, 3 May 2024 01:25:13 +0100 Subject: [PATCH 5/6] feat: update recursive fibonacci readme --- 21_recursiveFibonacci/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/21_recursiveFibonacci/README.md b/21_recursiveFibonacci/README.md index 79324d358c8..61e363c573c 100644 --- a/21_recursiveFibonacci/README.md +++ b/21_recursiveFibonacci/README.md @@ -1,6 +1,6 @@ -# Exercise 13 - recursiveFibonacci +# Exercise - recursiveFibonacci -Write a recursive function `recursiveFibonacci` that takes a number `n` and returns an array +Write a *recursive* function `recursiveFibonacci` that takes a number `n` and returns an array containing that many numbers from the Fibonacci sequence. You should already be familiar of what the fibonacci series is from an earlier exercise, but in case you have forgotten, each term in a fibonacci series is defined as the sum of the previous two terms. From de603998af061d3e7a1ed677610a5c2b90653d3a Mon Sep 17 00:00:00 2001 From: Nikita Revenco <154856872+nikitarevenco@users.noreply.github.com> Date: Fri, 3 May 2024 01:25:22 +0100 Subject: [PATCH 6/6] feat: recursive fibonacci write tests --- .../recursiveFibonacci-solution.spec.js | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/21_recursiveFibonacci/solution/recursiveFibonacci-solution.spec.js b/21_recursiveFibonacci/solution/recursiveFibonacci-solution.spec.js index 3d26e88fe42..0b6e34e4a84 100644 --- a/21_recursiveFibonacci/solution/recursiveFibonacci-solution.spec.js +++ b/21_recursiveFibonacci/solution/recursiveFibonacci-solution.spec.js @@ -2,42 +2,45 @@ const recursiveFibonacci = require('./recursiveFibonacci-solution'); describe('recursiveFibonacci', () => { test('Gets 1 fibonacci number', () => { - expect(recursiveFibonacci(1)).toBe([1]); + expect(recursiveFibonacci(1)).toEqual([1]); }); - test('Gets 2 fibonacci number', () => { - expect(recursiveFibonacci(2)).toBe([1, 1]); + test('Gets 2 fibonacci numbers', () => { + expect(recursiveFibonacci(2)).toEqual([1, 1]); }); - test('Gets 3 fibonacci number', () => { - expect(recursiveFibonacci(3)).toBe([1, 1]); + test('Gets 3 fibonacci numbers', () => { + expect(recursiveFibonacci(3)).toEqual([1, 1, 2]); }); - test('Gets 4 fibonacci number', () => { - expect(recursiveFibonacci(4)).toBe([1, 1]); + test('Gets 4 fibonacci numbers', () => { + expect(recursiveFibonacci(4)).toEqual([1, 1, 2, 3]); }); - test('Gets 6 fibonacci number', () => { - expect(recursiveFibonacci(6)).toBe([1, 1]); + test('Gets 5 fibonacci numbers', () => { + expect(recursiveFibonacci(5)).toEqual([1, 1, 2, 3, 5]); }); - test('Gets 10 fibonacci number', () => { - expect(recursiveFibonacci(10)).toBe([1, 1]); + test('Gets 6 fibonacci numbers', () => { + expect(recursiveFibonacci(6)).toEqual([1, 1, 2, 3, 5, 8]); }); - test('Gets 12 fibonacci number', () => { - expect(recursiveFibonacci(12)).toBe([1, 1]); + test('Gets 10 fibonacci numbers', () => { + expect(recursiveFibonacci(10)).toEqual([1, 1, 2, 3, 5, 8, 13, 21, 34, 55]); }); - test('Gets 16 fibonacci number', () => { - expect(recursiveFibonacci(16)).toBe([1, 1]); + test('Gets 12 fibonacci numbers', () => { + expect(recursiveFibonacci(12)).toEqual([1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144]); }); - test('Gets 20 fibonacci numbers', () => { - expect(recursiveFibonacci(20)).toBe([1, 1]); + test('Gets 15 fibonacci numbers', () => { + expect(recursiveFibonacci(15)).toEqual([1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610]); }); - test('Gets 22 fibonacci numbers', () => { - expect(recursiveFibonacci(22)).toBe([1, 1]); + test('Gets 20 fibonacci numbers', () => { + expect(recursiveFibonacci(20)).toEqual([ + 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765 + ]); }); }); +