|
'use strict' |
|
|
|
/** |
|
* Fibonacci numbers |
|
* 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946 |
|
*/ |
|
|
|
/** |
|
* Fibonacci calculator using recursion |
|
* |
|
* @param {number} n - fibonacci number to be calculated |
|
* @return {number} - calclated fibonacci number |
|
*/ |
|
function fibonacciRecursion(n) { |
|
return n < 2 ? n : fibonacciRecursion(n - 2) + fibonacciRecursion(n - 1) |
|
} |
|
|
|
/** |
|
* Fibonacci calculator using while loop |
|
* |
|
* @param {number} n - fibonacci number to be calculated |
|
* @return {number} - calclated fibonacci number |
|
*/ |
|
function fibonacciLoop(n) { |
|
let a = 1, |
|
b = 0 |
|
while (n--) { |
|
[a, b] = [b, b + a] |
|
} |
|
return b |
|
} |
|
|
|
/** |
|
* Test cases for fibonacciRecurions function |
|
*/ |
|
QUnit.test("fibonacciRecursion tests", (assert) => { |
|
assert.equal(fibonacciRecursion(0), 0) |
|
assert.equal(fibonacciRecursion(1), 1) |
|
assert.equal(fibonacciRecursion(2), 1) |
|
assert.equal(fibonacciRecursion(3), 2) |
|
assert.equal(fibonacciRecursion(4), 3) |
|
assert.equal(fibonacciRecursion(5), 5) |
|
assert.equal(fibonacciRecursion(6), 8) |
|
assert.equal(fibonacciRecursion(7), 13) |
|
assert.equal(fibonacciRecursion(14), 377) |
|
}) |
|
|
|
/** |
|
* Test cases for fibonacci numbers using loop |
|
*/ |
|
QUnit.test("fibonacciLoop tests", (assert) => { |
|
assert.equal(fibonacciLoop(0), 0) |
|
assert.equal(fibonacciLoop(1), 1) |
|
assert.equal(fibonacciLoop(2), 1) |
|
assert.equal(fibonacciLoop(3), 2) |
|
assert.equal(fibonacciLoop(4), 3) |
|
assert.equal(fibonacciLoop(5), 5) |
|
assert.equal(fibonacciLoop(6), 8) |
|
assert.equal(fibonacciLoop(7), 13) |
|
assert.equal(fibonacciLoop(14), 377) |
|
}) |
|
|