android - Android 上的搜索算法 : stack or preallocated buffer?

标签 android algorithm recursion stack

我正在为 Android 游戏开发一个寻路算法,我可以编写一个递归版本(这很好,但需要一个大堆栈,所以我可能需要为此创建一个具有更大堆栈大小的专用线程),以及一个使用缓冲区(而不是递归)的“循环”版本。提前不知道buffer的大小也是个大问题,所以目前看来只有基于栈的方案可行。

我知道这可能是一个算法理论或一般计算机科学问题,但也可能是特定于 Android 的,因为堆栈大小毕竟是系统特定的功能。

一般来说,Android 上哪个应该更高效(速度)?堆栈一个,还是依赖缓冲区(堆)的那个?请注意,问题在架构方面接近问题(假设算法的复杂性不取决于算法是递归的还是基于循环的)。

最佳答案

我知道您要求的是 Android 特定的答案,但我认为它与您的问题无关。两点说明

  1. 您不一定需要基于堆栈的解决方案来实现 递归算法,你可以用一个模拟堆上的堆栈 基于栈的数据结构。不过,有时您甚至不需要这个。这需要更多的工作,但不要将您的算法基于人为的架构约束。
  2. 有很多非递归寻路、最短路径算法,即Bellman-Ford

对于问题的最佳递归解决方案是否会优于 Android 上的最佳迭代解决方案,我无法发表评论。通常,在所有其他条件相同的情况下,迭代解决方案会更快,但是当您遇到比斐波那契数更复杂的算法时,递归地实现迭代算法或反之亦然可能会有所不同。

关于android - Android 上的搜索算法 : stack or preallocated buffer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10644134/

相关文章:

java - 如何修复递归字符串检查

javascript - javascript中的尾递归

android - 创建新的 Activity 还是创建不同的布局并替换现有布局更好?

android - 尝试使用 Facebook SDK 时 Gradle 构建失败

algorithm - 在全文搜索中使用索引进行多词查询(例如网络搜索)

java - 这段代码在保持顺序的同时打印句子的反面有什么问题?

javascript - 迭代树序列化函数

android - 如何在用户触摸事件时在 xml 布局上 move 图像?

android - Android 小部件中的 GridView

algorithm - 算法设计手册中的乐透彩票覆盖范围?