我知道这是基本的计算机科学问题,我的问题可能与this相匹配。
但它没有涵盖我在我的网络应用程序中的两种不同的场景。
我正在处理两个不同的类树对象数组,它们的成员是children。现在
两棵树的结构类似于下面(它是一个对象数组,基本上是一个JSON):
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循环,而对于第二个循环,我使用递归来访问每个节点。到目前为止,我的表现还算公平。
,但是在第一种情况下使用递归有什么好处吗?
或
如果第二棵树具有可变的深度,那么递归在哪里可以减少呢??
发布于 2014-04-20 17:33:58
在第一种情况下,递归比循环更糟糕,优缺点取决于编程语言和实现。
循环比递归更好,因为它执行简单的条件检查和跳转,其中递归包括推堆栈帧、跳转、返回和从堆栈弹出回来。
在第二种情况下,需要递归,因为我们知道树的深度,所以我们不能在代码中放置那么多循环。
发布于 2016-07-13 21:23:04
无论哪种情况,您都可以使用任何一种方法。递归将为您提供更简单、更易于维护和更易于阅读的代码。可能会有性能成本,但这可能不会很大,特别是如果您能够使用尾递归。从递归开始,然后只在(i)需要更好的性能和(ii)使用循环时可以测量的性能改进时,才转到循环。
https://stackoverflow.com/questions/23126719
复制相似问题