1

不确定这是否是一个有效的问题,但它就在这里。当涉及到不同的列表(linkedList、队列、堆栈等)和递归算法时,我有这个疑问。我只是不明白什么时候应该使用它们或为什么。我知道如何实现它们,但我不确定为什么要使用列表而不是常规数组,或者为什么要使用递归而不是 for。我将在 1 1/2 年后毕业,我不想在不知道这一点的情况下去找工作。

提前致谢,如果你能给我一个我应该使用其中任何一个问题的例子,我将不胜感激

4

3 回答 3

0

就“他们能做什么”而言,递归和迭代是等价的。使用递归而不是迭代的原因是它简化了如何编写某些算法。例如,递归地遍历二叉树会比尝试迭代地生成更清晰的代码;以递归方式编写快速排序比以迭代方式编写更容易和更简洁。递归只是利用程序堆栈来存储状态的行为。您可以通过自己存储堆栈将任何递归算法转换为其迭代算法。我建议你使用像Racket这样的语言一段时间。它会比我的话更能深入你的脑海。

您通常会使用列表而不是需要频繁删除的数组,并且您不需要经常访问特定元素。从数组中删除是一项O(n)操作,因为删除元素之后的所有内容都需要向左移动一个索引。队列不一定是列表结构,它们可以使用数组来表示。队列和堆栈在许多算法中都很有用,例如广度和深度优先的图形搜索。我建议您为此获取一本数据结构和算法书籍,让算法说明为什么某些数据结构有用将是无价的。

于 2012-10-02T03:23:10.727 回答
0

看看这篇比较递归和迭代的文章:http: //www.codeproject.com/Articles/21194/Iterative-vs-Recursive-Approaches
Go thru Array or List in Java。哪个更快?为了更好地理解列表和数组。

于 2012-10-02T03:14:42.310 回答
0

这是一个描述不同 Java 集合的页面。基本上,这取决于您的内容以及您希望如何使用它们。例如,当我需要一个没有重复的值的集合时,我使用一个 Set。当重复无关紧要时,我会使用 List,因为它们执行速度快,并且在我看来更容易编码。还有一些像队列这样的东西,它们按照您输入它们的顺序存储数据。

集合说明

于 2012-10-02T03:15:49.230 回答