using System.Collections.Generic;
public static void Main()
var result = TribonacciNumber(20);
Console.WriteLine(result);
for (var i = 0; i < map.Count; i++)
Console.WriteLine(map[i]);
public static int TribonacciNumber(int n)
if (n == 1 || n == 2) return 1;
return TribonacciNumber(n-3) + TribonacciNumber(n-2) + TribonacciNumber(n-1);
static Dictionary<int, int> map = new Dictionary<int, int>();
public static int TribonacciNumber1(int n)
if (n == 1 || n == 2) return 1;
if (map.ContainsKey(n)) return map[n];
map[n] = TribonacciNumber1(n-3) + TribonacciNumber1(n-2) + TribonacciNumber1(n-1);