You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

87 lines
2.4 KiB

'use strict';
const memoize = require('../lib').default;
const fibonacciSinglePrimitive = (number) => {
return number < 2 ? number : fibonacciSinglePrimitive(number - 1) + fibonacciSinglePrimitive(number - 2);
};
const fibonacciSingleArray = (array) => {
return array[0] < 2 ? array[0] : fibonacciSingleArray([array[0] - 1]) + fibonacciSingleArray([array[0] - 2]);
};
const fibonacciSingleObject = (object) => {
return object.number < 2
? object.number
: fibonacciSingleObject({number: object.number - 1}) + fibonacciSingleObject({number: object.number - 2});
};
const fibonacciMultiplePrimitive = (number, isComplete) => {
if (isComplete) {
return number;
}
const firstValue = number - 1;
const secondValue = number - 2;
return (
fibonacciMultiplePrimitive(firstValue, firstValue < 2) + fibonacciMultiplePrimitive(secondValue, secondValue < 2)
);
};
const fibonacciMultipleArray = (array, check) => {
if (check[0]) {
return array[0];
}
const firstValue = array[0] - 1;
const secondValue = array[0] - 2;
return (
fibonacciMultipleArray([firstValue], [firstValue < 2]) + fibonacciMultipleArray([secondValue], [secondValue < 2])
);
};
const fibonacciMultipleObject = (object, check) => {
if (check.isComplete) {
return object.number;
}
const firstValue = object.number - 1;
const secondValue = object.number - 2;
return (
fibonacciMultipleObject({number: firstValue}, {isComplete: firstValue < 2}) +
fibonacciMultipleObject({number: secondValue}, {isComplete: secondValue < 2})
);
};
const number = 35;
const array = [number];
const object = {number};
const isCompleteBoolean = false;
const isCompleteArray = [false];
const isCompleteObject = {isComplete: false};
fibonacciSinglePrimitive(number);
fibonacciSinglePrimitive(number);
fibonacciSinglePrimitive(number);
fibonacciSingleArray(array);
fibonacciSingleArray(array);
fibonacciSingleArray(array);
fibonacciSingleObject(object);
fibonacciSingleObject(object);
fibonacciSingleObject(object);
fibonacciMultiplePrimitive(number, isCompleteBoolean);
fibonacciMultiplePrimitive(number, isCompleteBoolean);
fibonacciMultiplePrimitive(number, isCompleteBoolean);
fibonacciMultipleArray(array, isCompleteArray);
fibonacciMultipleArray(array, isCompleteArray);
fibonacciMultipleArray(array, isCompleteArray);
fibonacciMultipleObject(object, isCompleteObject);
fibonacciMultipleObject(object, isCompleteObject);
fibonacciMultipleObject(object, isCompleteObject);