递归调用
C/C++中函数是可以调用自己的,这种操作就是递归调用。递归调用在一些使用场景下可以大大的简化代码。但递归调用也存在一些不足,对于程序员来讲,递归调用会降低代码的可读性,对于机器来讲,递归调用的嵌套越深的话,就会占用更多的栈区域。
递归调用可以有效的解决很多问题,由于其占用了较大的栈空间,根据空间与效率的原理,递归调用具有较高的执行效率,因此在对较大数据进行遍历时使用这个方法可以获得较高的速度。
要是用递归调用必须保证两点
1. 有明确的边界条件;
2. 有明显的前后关系。
递归的适用场景
最简单的递归就是计算一个数列的和值:
int a_add_to_b(int a, int b)
{
if(a != b)
{
return a + a_add_to_b(a + 1, b);
}
else
{
return a;
}
}
当然除了和值,计算阶乘、差比数列等等都是可行的。
对具有树状结构的数据进行搜索:
对于遍历具有树结构的数表时可以只用递归调用的方法。典型的应用就是对目录的搜索。
我们知道Linux的文件是一“/”为根,然后成树状组织的ÿ