private const long Mod = 1000000007;
public static long TribonacciRecursive(long n)
return (TribonacciRecursive(n - 1) + TribonacciRecursive(n - 2) + TribonacciRecursive(n - 3)) % Mod;
public static class TestTribonacci
public static bool RunTests()
bool allTestsPassed = true;
allTestsPassed &= Test(0, 0, "Test Case 0");
allTestsPassed &= Test(1, 1, "Test Case 1");
allTestsPassed &= Test(2, 1, "Test Case 2");
allTestsPassed &= Test(3, 2, "Test Case 3");
allTestsPassed &= Test(4, 4, "Test Case 4");
allTestsPassed &= Test(5, 7, "Test Case 5");
allTestsPassed &= Test(6, 13, "Test Case 6");
allTestsPassed &= Test(7, 24, "Test Case 7");
Console.WriteLine("All tests passed!");
Console.WriteLine("Some tests failed.");
private static bool Test(long n, long expected, string testName)
long actual = TribonacciRecursive(n);
bool passed = actual == expected;
Console.WriteLine($"{testName}: Expected {expected}, Actual {actual}, Passed: {passed}");
public static void Main(string[] args)
long result = TribonacciRecursive(n);
Console.WriteLine($"Tribonacci({n}) = {result}");
TestTribonacci.RunTests();