我在查看在线wiki时创建了二进制搜索。我有一类Athletes,每个类都有一个名称和编号。我输入一个文件文本或csv,并不重要 - 每个运动员的姓名和号码。我的程序首先对它们进行排序,然后我尝试添加基于用户输入搜索数字的功能,并显示谁穿着该编号的球衣。所以我最初的帖子是试图对具有相同编号的人进行二分查找。如果我的名单上有迈克尔乔丹和勒布朗詹姆斯,他们都会穿23号 - 所以当我的搜索过程中只输出1(以先到者为准)。我一直在寻找如何让我的搜索(下面)接受/查找多次出现的数字。但是,经过进一步测试,我发现如果我输入的数字实际上并不在我的列表中,它会给我错误:search: stack level too deep
,我不知道这意味着什么。我认为我的搜索不能正确处理,如果没有实例的数字,或者如果数组为0 所以我在寻找一些帮助,看看如何解决这个工作,如果用户输入的数字不是' t在列表中。所以如果有人输入“1000” - 没有人穿过该球衣号码,并且应该返回错误。或者类似的东西,打破,不管。未找到数字时发现二进制搜索错误
def search(array, num, start = 0, last = nil)
if last == nil
last = array.count - 1
end
mid = (start + last)/2
if num < array[mid].number
return search(array, num, start, mid - 1)
elsif num > array[mid].number
return search(array, num, mid + 1, last)
else
return mid
end
end
现在我也得到了==: stack level too deep
上线,其中if last == nil
看起来你一直在编辑这个问题,但现在它没有什么意义。你应该告诉我们你想要做什么,并提供一个[mcve]并解释你目前的尝试是什么问题,并提出一个明确的问题。 –