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

2024-03-19

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

我从事机器学习/数据挖掘工作,因此使我的代码具有可扩展性对我来说非常重要。

当我使用Java时,我尽可能避免使用递归调用,因为我经常会导致调用堆栈溢出。尽管有一些选项可以控制分配给调用堆栈的内存量,但我认为让我的程序依赖较少数量的参数更为理想。因此,当清楚如何在没有递归调用的情况下实现(可能使用我自己管理的堆栈)时,我就这样做了。但即使在 Java 中,我也不确定这是否是一个正确的规则。

据我所知,C/C++中没有调用堆栈,所以我不担心它会溢出。因此,我很好奇:就程序的可扩展性而言,人们会尝试避免使用递归,还是鼓励使用递归,或者它是针对特定问题的?


这个问题没有单一的正确答案。对于某些问题,递归非常有效。对于其他人来说,则不然。

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

需要明确的是,这是不正确的:有is我所知道的所有 C 和 C++ 实现中的调用堆栈。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

应该避免在 C/C++ 中使用递归调用吗? 的相关文章

随机推荐

  • 导出谷歌图表?

    我编写此代码是为了创建图表 表格和工具栏 google load visualization 1 packages corechart google load visualization 1 packages table google se
  • 新的 Facebook SDK FBSession sessionOpenWithPermissions

    我一直在尝试使用 Facebook 开发 iOS 应用程序 但我是新手 所以我一直在努力让 使用 Facebook 登录 按照 Facebook 上的教程并尝试实现它 但我遇到过 FBSession sessionOpenWithPermi
  • 在 Matlab 中将元胞数组打印为 .txt

    我有一个元胞数组 需要根据特定格式打印在 txt 文件中 我尝试过一些在线帮助 包括matlabcentraldlmcell但即便如此也没有给我想要的答案 分隔符是 t cellarray AAPL 2 20 2011 100 5 MSFT
  • 如何使用ActionBar 夏洛克?

    如何在 Android 应用程序中使用操作栏 sherlock 我已经尝试过该网站 但没有成功 我想要一个背景图像 将应用程序名称居中 操作栏中没有图标 我尝试过这段代码 http tinyurl com pguqag5以及中的例子这个链接
  • 枚举的单独类? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将 git 存储库向下移动到层次结构级别

    我现在已经搜索了几个小时 但找不到令人满意的答案 尽管这似乎是一个简单的新手问题 我基本上想要完成的是将当前位于项目文件夹旁边的 git 目录移动到项目文件夹中 最好这根本不应该改变存储库历史记录 尽管我不知道这实际上是否可能 我想这样做的
  • Scrapy 中每个项目有多个页面

    免责声明 我对 Scrapy 还很陌生 简单地提出我的问题 如何从页面上的链接检索 Item 属性并将结果返回到同一个 Item 中 给出以下示例 Spider class SiteSpider Spider site loader Sit
  • Azure 函数服务总线输出消息属性

    我正在尝试使用服务总线绑定输出在 JavaScript Azure 函数中设置服务总线消息的元数据 不幸的是 绑定似乎只支持身体 查看文档 我发现您可以通过以下方式在服务总线触发器中访问此信息context bindingData但我没有看
  • 用 ImageMapType、Tile 边界框替换 Google 地图 v3 中的 GTileLayer?

    我需要更新这段代码 radar layer getTileUrl function tile zoom var llp new GPoint tile x 256 tile y 1 256 var urp new GPoint tile x
  • 自动启动android服务

    如何在Android 3 x中自动启动服务 测试平板电脑是三星Galaxy 10 1 我的代码可以在带有 android 2 2 1 的无名平板电脑上运行该代码也可以在带有 android 版本 3 x 的 android 模拟器中运行 C
  • 如何从 VirtualBox 中修改 /etc/hosts

    我有一个应用程序 我必须更改它 etc hosts文件才能命中 这是我的新文件 127 0 0 1 localhost 127 0 0 1 local connectwithme 这在我的本地机器上很容易工作 我只是去local conne
  • Android Retrofit enqueue方法没有返回值

    fun getSurvey MutableList
  • Outlook 对象模型 - 连接到对话清理功能

    Outlook 2010 有一个功能称为对话清理 http office microsoft com en us outlook help use conversation clean up to eliminate redundant m
  • .Net:DataGridView 响应 IBinding.ListChanged 但不响应 CellValueChanged 事件处理程序

    我有一个自定义 IBinding 列表 它会引发 ListChanged 事件 我想在 ListChanged 事件之后重新着色 Datagridview 行 Datagridview 响应 ListChanged 事件并更改单元格值 但从
  • 允许将 Woocommerce 中特定产品类别的最多 3 个产品添加到购物车

    我尝试向免运费的客户发送最多 3 个免费样品 我创建了一些 0 价产品并将它们设置在 样品 产品类别中 该特定产品可以选择 单独出售 因此客户只能购买每个样品之 一 我不知道如何在购物车上只允许最多包含该产品类别的 3 个样品产品 任何帮助
  • 查找具有两个精确预定义差异的对应字符串的同位素

    我有一个名称向量 求和公式 例如 C 4 H 15 O 7 C 13 H 17 O 7 C 3 Cxiv 1 H 15 O 7 C 12 Cxiv 1 H 17 O 7 C 24 H 15 O 4 C 32 H 13 O 10 C 12 C
  • 将 Seq[Either[String, Int]] 转换为 (Seq[String], Seq[Int]) 的有效和/或惯用方法

    稍微简化一下 我的问题来自字符串列表input我想用函数解析parse返回Either String Int Then list map parse 返回一个列表Eithers 程序的下一步是格式化总结所有错误的错误消息or传递已解析的整数
  • QSlider 和按键事件

    我目前有一个 QSlider 可以使用鼠标滚动图像数据帧 我希望能够使用箭头键滚动单个步骤 一帧 这是我当前的 sliderMoved 代码 def sliderMoved self val retrieves the data array
  • 子对象的 MVC 模型绑定命名约定?

    当存在子属性时 我在默认模型绑定命名约定方面遇到问题 例如 我有一个 ViewModel 看起来像这样 public class UserViewModel public User BusinessObject get set 我的 Use
  • 应该避免在 C/C++ 中使用递归调用吗?

    是否应该避免在 C C 中使用函数的递归调用 我从事机器学习 数据挖掘工作 因此使我的代码具有可扩展性对我来说非常重要 当我使用Java时 我尽可能避免使用递归调用 因为我经常会导致调用堆栈溢出 尽管有一些选项可以控制分配给调用堆栈的内存量