递归的系统堆栈状态



在此处输入图像描述

有人可以解释系统堆栈的状态是什么吗?以及如何连接到二进制搜索?

显然是关于两个单独的东西,即

  1. 二进制搜索,可以迭代和递归地实现;
  2. 有关呼叫堆栈的递归和迭代实现之间的区别。

二进制搜索是指在排序列表(或排序的数组(中找到对象。策略是检查列表中间的对象;要么找到所需的对象。如果找不到,则必须在列表的左半部分或右半部分中进行搜索;无关的一半可以被丢弃。

可以迭代地实现这种方法,其中维护了管理搜索的辅助索引。另外,可以递归地实现它,其中二进制搜索相关的一半被调用。

在迭代实现中,只有一个调用二进制搜索的调用,这意味着没有生成搜索的新堆栈框架。在递归实现中,为每个递归调用生成一个新的堆栈框架。由于每个步骤至少丢弃了搜索空间的一半,这意味着生成了最多log(n)新堆栈帧(每个递归调用(,其中n是初始列表中的对象数量。

short:基本上,堆栈是系统用来存储函数状态时的内存的一部分(参数,变量等(。有关更长的描述,您可以咨询此良好的链接。二进制搜索没有连接到堆栈,实际上,任何代码都可以使用堆栈。在您的情况下,要求您在调用二进制搜索功能时描述堆栈的状态(如您提供的图片中的堆栈状态(。

最新更新