gpt4 book ai didi

java - 只有 2 个参数的递归二进制搜索方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:49:06 25 4
gpt4 key购买 nike

好的,这是一项学校作业。我在进行递归二进制搜索时没有遇到任何问题,但作业明确指出该方法应该只接受 2 个参数,即列表和您要搜索的项目。这是我有点迷路的地方。

public int binarySearch(List<Card> cards, Card key)
{
int mid = (cards.size()) / 2;
if(cards.size() == 1) {
if(key.equals(cards.get(0))) {
return 0;
}
}
else {
if(key.equals(cards.get(mid))) {
return mid;
}
else if(key.compareTo(cards.get(mid)) == - 1) {
return binarySearch(cards.subList(0, mid), key);
}
else if(key.compareTo(cards.get(mid)) == 1) {
return mid + 1 + binarySearch(cards.subList(mid + 1, cards.size()), key);
}
}
return -1;
}

因此,除非我正在搜索不存在且属于列表上半部分的内容,否则这将正常工作。因为我只传递 2 个参数,所以我必须在每次递归调用时更改列表,但是,如果它在上半部分,我不能丢失我的索引点,所以我必须在递归调用中添加那些,如果它最终不在上半部分,然后它返回 -1 + 我之前考虑过的所有那些索引。有没有一种方法可以将其全部清除并使其返回-1?任何建议表示赞赏。

最佳答案

缓存并测试函数调用的结果,如果返回-1,否则计算并返回。

关于java - 只有 2 个参数的递归二进制搜索方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8392637/

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