diff --git a/README.md b/README.md index d6a3ffe4b..0caf638f1 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,8 @@ * [`distance`](#distance) * [`factorial`](#factorial) * [`fibonacci`](#fibonacci) +* [`fibonacciCountUntilNum`](#fibonaccicountuntilnum) +* [`fibonacciUntilNum`](#fibonacciuntilnum) * [`gcd`](#gcd) * [`hammingDistance`](#hammingdistance) * [`inRange`](#inrange) @@ -1368,6 +1370,38 @@ const fibonacci = n => [⬆ back to top](#table-of-contents) +### 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 +``` + +[⬆ back to top](#table-of-contents) + +### 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] +``` + +[⬆ back to top](#table-of-contents) + ### gcd Calculates the greatest common divisor between two numbers. diff --git a/docs/index.html b/docs/index.html index b02eda175..ee07a9add 100644 --- a/docs/index.html +++ b/docs/index.html @@ -127,6 +127,8 @@ distance factorial fibonacci +fibonacciCountUntilNum +fibonacciUntilNum gcd hammingDistance inRange @@ -867,6 +869,24 @@ Use Array.reduce() to add values into the array, using the sum of t Array.from({ length: n}).reduce((acc, val, i) => acc.concat(i > 1 ? acc[i - 1] + acc[i - 2] : i), []); // fibonacci(5) -> [0,1,1,2,3] +

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.

+
const fibonacciCountUntilNum = num =>
+  Math.ceil(Math.log(num * Math.sqrt(5) + 1/2) / Math.log((Math.sqrt(5)+1)/2));
+// fibonacciCountUntilNum(10) -> 7
+
+

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.

+
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]
+

gcd

Calculates the greatest common divisor between two numbers.

Use recursion.