})
}
-const generateRandomInteger = (max = Number.MAX_SAFE_INTEGER, min = 0) => {
- if (max < min || max < 0 || min < 0) {
- throw new RangeError('Invalid interval')
- }
- max = Math.floor(max)
- if (min != null && min !== 0) {
- min = Math.ceil(min)
- return Math.floor(Math.random() * (max - min + 1)) + min
- }
- return Math.floor(Math.random() * (max + 1))
-}
-
const jsonIntegerSerialization = n => {
for (let i = 0; i < n; i++) {
const o = {
}
/**
- * Intentionally inefficient implementation.
* @param {number} n - The number of fibonacci numbers to generate.
* @returns {number} - The nth fibonacci number.
*/
const fibonacci = n => {
- if (n <= 1) return n
- return fibonacci(n - 1) + fibonacci(n - 2)
+ let current = 1
+ let previous = 0
+ while (--n) {
+ const tmp = current
+ current += previous
+ previous = tmp
+ }
+ return current
}
/**
- * Intentionally inefficient implementation.
* @param {number} n - The number to calculate the factorial of.
* @returns {number} - The factorial of n.
*/
const factorial = n => {
- if (n === 0) {
+ if (n === 0 || n === 1) {
return 1
+ } else {
+ let factorial = 1
+ for (let i = 1; i <= n; i++) {
+ factorial *= i
+ }
+ return factorial
}
- return factorial(n - 1) * n
}
const executeTaskFunction = data => {
case TaskFunctions.jsonIntegerSerialization:
return jsonIntegerSerialization(data.n || 100)
case TaskFunctions.fibonacci:
- return fibonacci(data.n || 25)
+ return fibonacci(data.n || 100)
case TaskFunctions.factorial:
return factorial(data.n || 100)
default:
executeTaskFunction,
factorial,
fibonacci,
- generateRandomInteger,
jsonIntegerSerialization,
sleep,
sleepTaskFunction,