From f379475723b524f1ef3c1e3d06efcd4e6bcb04d9 Mon Sep 17 00:00:00 2001 From: YATIN KATHURIA <47096348+Yatin-kathuria@users.noreply.github.com> Date: Sat, 20 Nov 2021 09:43:27 +0530 Subject: [PATCH] merge: Add TribonacciNumber in dp (#839) --- Dynamic-Programming/TribonacciNumber.js | 20 ++++++++++++++++ .../tests/TribonacciNumber.test.js | 23 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 Dynamic-Programming/TribonacciNumber.js create mode 100644 Dynamic-Programming/tests/TribonacciNumber.test.js diff --git a/Dynamic-Programming/TribonacciNumber.js b/Dynamic-Programming/TribonacciNumber.js new file mode 100644 index 000000000..67a95a0e4 --- /dev/null +++ b/Dynamic-Programming/TribonacciNumber.js @@ -0,0 +1,20 @@ +/** + * @function Tribonacci + * @description Tribonacci is the sum of previous three tribonacci numbers. + * @param {Integer} n - The input integer + * @return {Integer} tribonacci of n. + * @see [Tribonacci_Numbers](https://www.geeksforgeeks.org/tribonacci-numbers/) + */ +const tribonacci = (n) => { + // creating array to store previous tribonacci numbers + const dp = new Array(n + 1) + dp[0] = 0 + dp[1] = 1 + dp[2] = 1 + for (let i = 3; i <= n; i++) { + dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3] + } + return dp[n] +} + +export { tribonacci } diff --git a/Dynamic-Programming/tests/TribonacciNumber.test.js b/Dynamic-Programming/tests/TribonacciNumber.test.js new file mode 100644 index 000000000..1ce012dfe --- /dev/null +++ b/Dynamic-Programming/tests/TribonacciNumber.test.js @@ -0,0 +1,23 @@ +import { tribonacci } from '../TribonacciNumber' + +describe('TribonacciNumber', () => { + it('tribonacci of 0', () => { + expect(tribonacci(0)).toBe(0) + }) + + it('tribonacci of 1', () => { + expect(tribonacci(1)).toBe(1) + }) + + it('tribonacci of 2', () => { + expect(tribonacci(2)).toBe(1) + }) + + it('tribonacci of 10', () => { + expect(tribonacci(10)).toBe(149) + }) + + it('tribonacci of 25', () => { + expect(tribonacci(25)).toBe(1389537) + }) +})