【二】软考—递归


定义:


   指子程序或函数直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的常用方法。


为什么用它:


   递归调用是设计和描述算法的一种有力工具,在解决复杂问题时,经常采用。理论上讲,任何递归算法都有其非递归算法,但实际运用中,能够写出相应的非递归算法并加以实现的递归算法是很少的,所以递归仍是解决复杂问题的常用方法之一。


这么用:


T(n)=1          (n=1)
T(n)=T(n-1)+n   (n>1)
求T(n)?

static void Main(string[] args)
        {
            Console.WriteLine (operation(100));
            Console.Read();
        }
        static int operation(int n)
        {

            if (n == 0)
            {
                n = 0;
            }
            else
            {
                Console.WriteLine(n);
                n += operation(n - 1);

            }
            return n;
        }


注意:


    递归就是在过程或函数里调用自身。
    必须有一个明确的递归结束条件,称为递归出口。

    可能看到代码有点蒙圈吧,我们展开来说。

假设n=10,求T(n)。
T(10)=T(9)+10
     =T(8)+9+10
     =T(7)+8+9+10
     。。。
     =T(1)+2+3+4+5+6+7+8+9+10
     T(1)=1,结果就一目了然了吧。

总结:


   算法算法,很多人看到会觉得好难学不会,算法大多都是递归形式的,递归会了多部分的算法也就会了。相信自己,好好研究。

这里写图片描述

评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值