diff --git a/snippets/fibonacciCountUntilNum.md b/snippets/fibonacciCountUntilNum.md new file mode 100644 index 000000000..12fffbfb6 --- /dev/null +++ b/snippets/fibonacciCountUntilNum.md @@ -0,0 +1,11 @@ +### fibonacciCountUntilNum + +Returns the number of fibonnacci numbers up to `num`(`0` and `num` inclusive). + +Use a mathematical formula to calculate the number of fibonacci numbers until `num`. + +```js +const fibonacciCountUntilNum = num => + Math.ceil(Math.log(num * Math.sqrt(5) + 1/2) / Math.log((Math.sqrt(5)+1)/2)); +// fibonacciCountUntilNum(10) -> 7 +``` diff --git a/snippets/fibonacciUntilNum.md b/snippets/fibonacciUntilNum.md new file mode 100644 index 000000000..55df575d0 --- /dev/null +++ b/snippets/fibonacciUntilNum.md @@ -0,0 +1,15 @@ +### fibonacciUntilNum + +Generates an array, containing the Fibonacci sequence, up until the nth term. + +Create an empty array of the specific length, initializing the first two values (`0` and `1`). +Use `Array.reduce()` to add values into the array, using the sum of the last two values, except for the first two. +Uses a mathematical formula to calculate the length of the array required. + +```js +const fibonacciUntilNum = num => { + let n = Math.ceil(Math.log(num * Math.sqrt(5) + 1/2) / Math.log((Math.sqrt(5)+1)/2)); + return Array.from({ length: n}).reduce((acc, val, i) => acc.concat(i > 1 ? acc[i - 1] + acc[i - 2] : i), []); +} +// fibonacciUntilNum(15) -> [0,1,1,2,3,5,8,13] +```