C/C++中的递归函数

Vij*_*jay 5 c c++ recursion

如果我们在C/C++中考虑递归函数,它们在任何方面都有用吗?它们究竟在哪里使用?使用递归函数在内存方面有什么优势吗?

编辑:更好的递归还是使用while循环?

sha*_*oth 10

递归函数主要用于简化设计算法.例如,你需要递归遍历一个目录树 - 它的深度有限,所以你很可能永远不会面对太深的递归和随之而来的堆栈溢出,但是递归地编写树遍历会更容易,然后做同样的事情.以迭代的方式.

在大多数情况下,与迭代解决方案相比,递归函数不会节省内存.更糟糕的是,他们消耗相对稀疏的堆栈内存.

  • 堆栈内存是稀疏的,因为分配了一定量的地址空间.现代内存管理可以轻松处理不断增长的堆栈,但是当地址空间已满时,没有任何地方可以增长,堆栈会出现段错误.当线程涉及时,这个问题会变得更糟,因为它们的堆栈地址空间通常比main更有限.这可能不再是64位地址空间中的问题,因为可以在不限制指令或堆部分的情况下为堆栈分配疯狂的大部分地址空间. (2认同)