当前位置:  开发笔记 > 编程语言 > 正文

应该避免在C/C++中使用递归调用吗?

如何解决《应该避免在C/C++中使用递归调用吗?》经验,为你挑选了2个好方法。

应该避免在C/C++中使用函数的递归调用吗?

我从事机器学习/数据挖掘,因此让我的代码可扩展是非常关键的.

当我使用Java时,我尽可能避免使用递归调用,因为我经常让我的调用堆栈溢出.虽然有控制分配给调用堆栈的内存量的选项,但我认为让我的程序依赖于较少数量的参数是更理想的.因此,当很清楚如何在没有递归调用的情况下实现,可能使用自己管理的堆栈,我这样做了.但即使在Java中,我也不确定这是一门正确的学科.

据我所知,C/C++中没有调用堆栈,所以我不担心溢出它.因此,我很好奇:在程序的可伸缩性方面,是否会尝试避免使用递归,或者是鼓励它,还是特定于问题?



1> NPE..:

这个问题没有一个正确的答案.对于某些问题,递归效果很好.对于其他人,它没有.

据我所知,C/C++中没有调用堆栈

只是要清楚,这是不正确的:有在C和C的所有实现++,我知道的调用堆栈.



2> Armen Tsirun..:

据我所知,C/C++中没有调用堆栈,所以我不担心溢出它

咦?当然,标准没有讨论调用堆栈,但实际上在大多数(如果不是全部)实现中都有一个.

现在,应该避免递归吗?首先,众所周知,每个递归函数都可以迭代重写(即没有递归).而且,有时迭代解决方案比递归解决方案更快.但是对于某些任务,例如图中的DFS,递归是如此简单和有用,除非你有充分的理由不这样做,否则你不应该避免使用它.同一个DFS的迭代解决方案几乎一样简单,但需要更多的输入......

我的2 c.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有