我得到的结果是31,在我的笔记本上运行起来几乎不花时间(平均低于10毫秒)。并且,计算机并不笨,笨的是编写计算机程序的人才对。
static Dictionary<int, long> midF = new Dictionary<int, long>();static private long F(int k)
{
    if (k <= 1)
        return k;    long res;
    if (!midF.TryGetValue(k, out res))
    {
        res = (2002 * F(k - 1) + 2003 * F(k - 2)) % 2005;
        midF.Add(k, res);
    }
    return res;
}

解决方案 »

  1.   

    其实我是用 Dictionary 来保存中间变量,是很奢侈的。在我的工作中,我通常都对这种奢侈不以为然,有不少笨蛋领导就因此认为我很奢侈腐化,不如那些埋头苦干的程序员精益求精。上帝让我跟这样的领导分开了,我很幸运。
      

  2.   

    理论上,使用
      
      static long[] midF = new long[2005];肯定可以再快上百倍。但是我通常会等到真正干大事的时候才那样去想问题。我重视的东西,是很好玩的,对技术不太关心。
      

  3.   

    牛人
    另外,csdn什么时候可以连续回复超过三次了?
      

  4.   

    [sp1234]
    比较NB,分析了下两个写法,是比较不一样.
    另外我测试了下,发现[hnaulxd(博士)]的写法居然使我的CPU的风扇剧烈运动.