递归
一个算法调用自己来完成它的部分工作,在解决某些问题时,一个算法需要调用自
身。如果一个算法直接调用自己或间接地调用自己,就称这个算法是递归(Recursive).
根据调用方式不同,它分为直接递归(Direct Recursion)和间接递归Indirect
Recursion)
比如,在收看电视节目时,如果演播室中也有一台电视机播放的是与当前相同的
节目,观众就会发现屏幕里的电视套有一层层的电视画面。这种现象类似于直接递归。
如果把二面镜子面对面的摆放,便可从任意一面镜子里看到两面镜子无数个影像
,这类似于间接递归。
一个递归算法必须有二个部分:初始部分(Base Case)和递归部分(Recursion
Case)初始部分只处理可以直接解决而不需要再次递归调用的简单输入。递归部分包含
对算法一的次或多次递归调用,每一次的调用参数都在某种程序鸡皮疙瘩比原始调用更
接近初始情况。
函数的递归调用可以理解为:通过一系列的自身调用,达到某一终止条件后,再按
照调用路线逐步返回,递归是程序设计中强有力的工具,有很多数学函数是以递归来定
义的(求阶乘函数 n!)
C#中实现
static void Main()
{
Console.WriteLine("请输入一个数字");
int a =int.Parse( Console.ReadLine());
Console.WriteLine (factorial(a));
Console.ReadKey();
}
public static long factorial(int a ){
if (a <= 1)
{
return 1;
}
else
{
return a * factorial(a - 1);
}
}
|
|