定义:
指子程序或函数直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的常用方法。
为什么用它:
递归调用是设计和描述算法的一种有力工具,在解决复杂问题时,经常采用。理论上讲,任何递归算法都有其非递归算法,但实际运用中,能够写出相应的非递归算法并加以实现的递归算法是很少的,所以递归仍是解决复杂问题的常用方法之一。
这么用:
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,结果就一目了然了吧。
总结:
算法算法,很多人看到会觉得好难学不会,算法大多都是递归形式的,递归会了多部分的算法也就会了。相信自己,好好研究。