利用静态方法,计算1!+2!+…+N!的值,怎么进行优化程序

利用静态方法,计算1!+2!+……+N!的值,如何进行优化程序?
一、题目:利用静态方法,从优化程序性能的角度来计算1!+2!+……+N!的值。
二、我的努力
namespace 书本练习题
{
    public class Numbercount
    {
        public static int sumhe;
        public static int sum(int x)
        {
            int m=0,n=1;
            for(int i=1;i<=x;i++)
            {
                for(int j=1;j<=i;j++)
                {
                    n=n*j;
                }
                m=m+n;
                n = 1;
            }
            return m;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Console .WriteLine ("请输入一个大于1的正整数:");
            int number = Convert .ToInt32 (Console .ReadLine ());
            Numbercount .sumhe = Numbercount .sum (number );
            Console.WriteLine ("{0}!的值为:{1}",number ,Numbercount .sumhe);

            Console.ReadKey();
        }
    }
}

三、我的困惑
第一,我是初学C#小菜,不懂怎样做是优化?
第二,在此请教论坛里的高手、大侠,该题如何优化?请高手大侠不吝赐教,最好是清晰的按步解析(主要原因是本人是小菜)。
第三,优化程序,在学习过程中经常遇到,我不知怎么回事?希望大侠们能举个例子说明。
小虾在此有礼了!谢谢!
------解决方案--------------------
public static int sum(int x)
        {
            int m = 0, n = 1;
            for (int i = 1; i <= x; i++)
            {
                n *= i;
                m += n;
            }
            return m;
        }

起码sum函数能这么写,sumhe似乎没啥用
------解决方案--------------------
引用:
返回值int可能越界哦

首项加末项乘以项数除以2不好么?

刚睡醒。。没看清题目。。不好意思啊

1楼的方法,能用到上一次的阶乘结果,最好了