动态规划

系统 1386 0

动态规划认为是递归的反向技术,递归的效率低下。

斐波那契数列  1,2,3,5 8,13,21,34

 

static long recurFib(int n) 

{

if (n < 2)

        return n;

else

        return recurFib(n - 1) + recurFib(n - 2);

}

 

 

动态规划版本 

 

    static long iterFib(int n)

    {

        int[] val = new int[n];

        if ((n == 1) || (n == 2))

            return 1;

        else

        {

            val[1] = 1;

            val[2] = 2;

            for (int i = 3; i <= n - 1; i++)

                val[i] = val[i - 1] + val[i - 2];

        }

        return val[n - 1];

}

 

static void Main()

{

Timing tObj = new Timing();

    Timing tObj1 = new Timing();

    int num = 35;

    long fibNumber;

    tObj.startTime();

    fibNumber = recurFib(num);

    tObj.stopTime();

    Console.WriteLine("Calculating Fibonacci number: " + num);

    Console.WriteLine(fibNumber + " in: " + tObj.Result().TotalMilliseconds);

    tObj1.startTime();

    fibNumber = iterFib(num);

    tObj1.stopTime();

    Console.WriteLine(fibNumber + " in: " + tObj1.Result().TotalMilliseconds);

}

随着数字增大,效率差距很大。

动态规划


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论