gpt4 book ai didi

java - 在二分查找中, 'returned' 是什么

转载 作者:行者123 更新时间:2023-12-01 17:16:00 24 4
gpt4 key购买 nike

   private static Comparable search(Comparable[] a, Comparable key, int left,
int right) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (key.compareTo(a[mid]) < 0) {
return search(a, key, left, mid - 1);
} else if (key.compareTo(a[mid]) > 0) {
return search(a, key, mid + 1, right);
} else {
return a[mid];
}
}
return "not found";

}

我对算法和递归有一个大致的了解,但此时感到困惑。如果第一个 if 语句运行 4 次,那么这 4 次中每次返回什么?实际值(value)是多少?所有堆栈的值都相同吗?这将是基本情况的[mid]

更新的代码

编辑:
我的问题是,每次递归调用“return”时,在到达基本情况并且堆栈上的所有调用完成后,它们的值是什么?如果第一个 if 语句运行两次,那么它在堆栈上有 2 个递归调用等待返回值。递归完成时返回值是多少

最佳答案

是的,所有父调用中的值都相同。这样想,如果子调用找到该对象,那么它将返回该对象,父调用将返回子调用返回的内容,接下来父调用将成为另一个父调用的子调用,并且会发生相同的情况。很难用语言来解释,但这只是我们人类大脑不习惯的逻辑和递归的魔力。

关于java - 在二分查找中, 'returned' 是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22108710/

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