gpt4 book ai didi

java - 递归和不同的列表

转载 作者:行者123 更新时间:2023-12-01 05:05:52 25 4
gpt4 key购买 nike

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

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

最佳答案

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

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

关于java - 递归和不同的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12684033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com