谁和何时在生产环境中使用递归代码

时间:2017-01-17 09:32:40

标签: optimization

我有2年的IT经验。我还没有看到任何递归代码。我想知道是否有任何公司或组织在其生产环境中使用递归代码。如果有些人也解释用例也会很棒。

3 个答案:

答案 0 :(得分:1)

使用可变参数模板的所有代码都必须使用递归,请参阅例如http://kevinushey.github.io/blog/2016/01/27/introduction-to-c++-variadic-templates/

this question的答案给出了一些递归示例。最令人信服的是针对递归定义语言的手动编码(或者说解析器)实现(如C和大多数其他语言,其中块可以包含块,表达式表达式等)。也许这对我来说最有说服力,因为我在CS课程中这样做,但仍然如此。即使在这里,无可否认,生产编译器可能是使用工具创建的,而不是递归的。如果有人了解gcc或其他一个开源编译器的内部工作原理,我会很感激。

我通常会假设一些程序处理具有有限递归深度的递归数据结构(比如平衡树,而不是普通树或列表)使用递归,只是因为它简单而优雅,并且深度限制消除了最大递归的障碍。

考虑到这一点,我实际上使用递归来为内部定制程序解析一个简单的“选项语言”,该程序有一个选项-eval <file>,其中引用的文件包含更多选项,可能包括更多-eval秒。引用的文件确实只是递归评估。

答案 1 :(得分:1)

如果程序基本上是CRUD(创建,检索,更新,删除)屏幕以连接到某种类型的数据库,您将看不到太多的递归调用。这是很多严肃的,现实世界的编程。

但是大量的节目都有树木。例如。艺术品树或3D动画对象树。一旦你使用树,递归是解决问题的最简单方法。

还有“函数式编程”范例用迭代替换迭代。它具有一些理论上的好处,并且在某些环境中使用,尽管它仍然有点学术性和实验性。

答案 2 :(得分:0)

为了您的信息,我之前进入了一家IT公司,在那里我用来在生产环境中编写大量的递归代码。如果你希望我可以发送一些递归代码示例

,那么它取决于编码器