【发布时间】:2020-08-15 06:51:46
【问题描述】:
我试图了解传递子数组的递归算法和将索引传递给同一数组的递归算法之间的内存使用差异,特别是参考 Ruby 的内存处理。我一直在努力寻找有关 Ruby 子数组如何以这种详细程度工作的文档。
例如在二进制搜索中,您的递归函数可能如下所示:
def search(list, target, low, high)
其中high 和low 是索引,在方法主体中,一行如下所示:
if list[mid_index] < target
return search(list, target, mid_index + 1, high)
在这里,我们总是在方法之间传递相同的列表。
或者,同样的代码可以写成:
def search(list, target)
...
if list[mid_index] < target
return search(list[(mid_index + 1)..list.length - 1], target)
在第二种情况下,看起来我正在传递数组的子集(只是对相同对象的引用?),但我实际上是通过使用 [] 运算符还是通过将它们用作方法参数?
【问题讨论】:
标签: arrays ruby memory binary-search