首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >固定高度树的嵌套循环与递归

固定高度树的嵌套循环与递归
EN

Stack Overflow用户
提问于 2014-04-17 07:08:44
回答 2查看 266关注 0票数 0

我知道这是基本的计算机科学问题,我的问题可能与this相匹配。

但它没有涵盖我在我的网络应用程序中的两种不同的场景。

我正在处理两个不同的类树对象数组,它们的成员是children。现在

  1. 第一棵树有固定的高度(最多3层)
  2. 第二棵树,具有任意的水平深度。

两棵树的结构类似于下面(它是一个对象数组,基本上是一个JSON):

代码语言:javascript
运行
复制
0 ---- someKey
|
---- someOtherKey
|
---- children
                0 ---- someKey
                |
                ---- someOtherKey
                |
                ---- children
                              0 ---- someKey
                              |
                              ---- someOtherKey
                              |
                              ---- children []
                1 ---- someKey
                |
                ---- someOtherKey
                |
                ---- children []

1 ---- someKey
|
---- someOtherKey
|
---- children []

2 ---- someKey
|
---- someOtherKey
|
---- children []

现在,为了遍历第一棵树,我使用了3个嵌套的for循环,而对于第二个循环,我使用递归来访问每个节点。到目前为止,我的表现还算公平。

,但是在第一种情况下使用递归有什么好处吗?

如果第二棵树具有可变的深度,那么递归在哪里可以减少呢?

EN

回答 2

Stack Overflow用户

发布于 2014-04-20 17:33:58

在第一种情况下,递归比循环更糟糕,优缺点取决于编程语言和实现。

循环比递归更好,因为它执行简单的条件检查和跳转,其中递归包括推堆栈帧、跳转、返回和从堆栈弹出回来。

在第二种情况下,需要递归,因为我们知道树的深度,所以我们不能在代码中放置那么多循环。

票数 0
EN

Stack Overflow用户

发布于 2016-07-13 21:23:04

无论哪种情况,您都可以使用任何一种方法。递归将为您提供更简单、更易于维护和更易于阅读的代码。可能会有性能成本,但这可能不会很大,特别是如果您能够使用尾递归。从递归开始,然后只在(i)需要更好的性能和(ii)使用循环时可以测量的性能改进时,才转到循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23126719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档