应该避免在C/C++中使用函数的递归调用吗?
我从事机器学习/数据挖掘,因此让我的代码可扩展是非常关键的.
当我使用Java时,我尽可能避免使用递归调用,因为我经常让我的调用堆栈溢出.虽然有控制分配给调用堆栈的内存量的选项,但我认为让我的程序依赖于较少数量的参数是更理想的.因此,当很清楚如何在没有递归调用的情况下实现,可能使用自己管理的堆栈,我这样做了.但即使在Java中,我也不确定这是一门正确的学科.
据我所知,C/C++中没有调用堆栈,所以我不担心溢出它.因此,我很好奇:在程序的可伸缩性方面,是否会尝试避免使用递归,或者是鼓励它,还是特定于问题?
这个问题没有一个正确的答案.对于某些问题,递归效果很好.对于其他人,它没有.
据我所知,C/C++中没有调用堆栈
只是要清楚,这是不正确的:有是在C和C的所有实现++,我知道的调用堆栈.
据我所知,C/C++中没有调用堆栈,所以我不担心溢出它
咦?当然,标准没有讨论调用堆栈,但实际上在大多数(如果不是全部)实现中都有一个.
现在,应该避免递归吗?首先,众所周知,每个递归函数都可以迭代重写(即没有递归).而且,有时迭代解决方案比递归解决方案更快.但是对于某些任务,例如图中的DFS,递归是如此简单和有用,除非你有充分的理由不这样做,否则你不应该避免使用它.同一个DFS的迭代解决方案几乎一样简单,但需要更多的输入......
我的2 c.