递归算法是一种函数自己调用自己的算法,通常用于处理具有递归结构的问题,如分形图形,树结构等。这里以求阶乘为例,来介绍一下递归算法。
递归算法求阶乘
阶乘的公式:n!=n*(n-1)*(n-2)*...*1,用递归算法实现如下:
int fact(int n) {
if(n<=1)
return 1;
else
return n*fact(n-1);
}
当n=1时,终止递归。其他情况下,函数返回n*fact(n-1),这句话会被不断递归调用,直到调用到n=1的时候终止递归。在递归调用结束之后,每一层的返回结果会传递给上一层,最后得到最终结果。
但是注意,递归算法需要推出边界和给出递归式,如果递归式不收敛,会导致堆栈溢出;而如果递归式中会出现重复计算,会造成时间和空间上的浪费。