Memoisation: you could create an Enumeration that will replace the recursion... here is an example for calculating faculty doing that... (wont work for big numbers as i only used long in the example :-))
public class Faculty
{
public static IEnumerable<long> Faculties(long n)
{
long stopat = n;
long x = 1;
long result = 1;
while (x <= n)
{
result = result * x;
yield return result;
x++;
}
}
}