diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/Tribonacci.java b/src/main/java/com/thealgorithms/dynamicprogramming/Tribonacci.java new file mode 100644 index 000000000000..99f9029009ab --- /dev/null +++ b/src/main/java/com/thealgorithms/dynamicprogramming/Tribonacci.java @@ -0,0 +1,30 @@ +package com.thealgorithms.dynamicprogramming; + +/** + * The {@code Tribonacci} class provides a method to compute the n-th number in the Tribonacci sequence. + * N-th Tribonacci Number - https://leetcode.com/problems/n-th-tribonacci-number/description/ + */ +public class Tribonacci { + + /** + * Computes the n-th Tribonacci number. + * + * @param n the index of the Tribonacci number to compute + * @return the n-th Tribonacci number + */ + public static int compute(int n) { + if (n == 0) return 0; + if (n == 1 || n == 2) return 1; + + int first = 0, second = 1, third = 1; + + for (int i = 3; i <= n; i++) { + int next = first + second + third; + first = second; + second = third; + third = next; + } + + return third; + } +} diff --git a/src/test/java/com/thealgorithms/dynamicprogramming/TribonacciTest.java b/src/test/java/com/thealgorithms/dynamicprogramming/TribonacciTest.java new file mode 100644 index 000000000000..434a1825dfec --- /dev/null +++ b/src/test/java/com/thealgorithms/dynamicprogramming/TribonacciTest.java @@ -0,0 +1,24 @@ +package com.thealgorithms.dynamicprogramming; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +/** + * Test class for {@code Tribonacci}. + */ +public class TribonacciTest { + + /** + * Tests the Tribonacci computation for a set of known values. + */ + @Test + public void testKnownValues() { + assertEquals(0, Tribonacci.compute(0), "The 0th Tribonacci should be 0."); + assertEquals(1, Tribonacci.compute(1), "The 1st Tribonacci should be 1."); + assertEquals(1, Tribonacci.compute(2), "The 2nd Tribonacci should be 1."); + assertEquals(2, Tribonacci.compute(3), "The 3rd Tribonacci should be 2."); + assertEquals(4, Tribonacci.compute(4), "The 4th Tribonacci should be 4."); + assertEquals(7, Tribonacci.compute(5), "The 5th Tribonacci should be 7."); + } +}