我已经为二进制搜索编写了代码。它打印中间值,但在退出函数时不返回相同的值。

def binarysearch(array,low,high,key):
  mid=(low+high)//2
  if array[mid]==key:
    print ('arrar[mid]: ',array[mid],'mid= ', mid)
     return mid
  elif key> array[mid]:
    binarysearch(array, low+1, high,key)
  elif key<array[mid]:
    binarysearch(array,low,mid-1,key)
  else:
    return -1


data=[1,2,3,4,5]
result=binarysearch(data,0,5,5)
print('result=',result)

输出:

 arrar[mid]: 5 mid =4
 result=None

#1楼 票数:0

elif key> array[mid]:
binarysearch(array, low+1, high,key)

应该

elif key> array[mid]:
binarysearch(array, mid, high,key)

  ask by nehat280 translate from so

未解决问题?本站智能推荐:

2回复

递归二进制搜索功能

上面的二分搜索算法是尾递归的吗? 为什么? 如果没有,那为什么不呢?
3回复

数组的JS二进制搜索中的递归与无递归

我已经写出一种递归方法,用于在不重复的数组中查找单个项目(而所有其他项目都是成对的并且彼此相邻) 。 我的问题是,这可以在没有递归的情况下完成吗(也许使用 while 循环)并且在函数中使用循环比仅使用递归更有效(就内存而言)? 当前解决方案: 谢谢你。
1回复

使用递归二进制搜索

我当前正在编写一个程序,其中一个任务中我必须使用二进制递归函数在数组中搜索整数并显示目标的索引。 但是,我在使用此特定功能时遇到了麻烦,因为它输出的索引与正确的索引不同。 如果有人可以帮助解决此错误,我将不胜感激! 我当前的代码 我目前的输出
6回复

递归二进制搜索

在我的主文件中,我有一个字符串数组,即char名称[320] [30],然后用冒泡排序将其排序。 我希望能够进行递归二进制搜索,以确定名称数组中是否存在单词以及其索引是什么。 索引由一组无符号int Set [10]表示。 如果单词不存在,该函数应返回-1。 在主函数中,我调用该函数:
2回复

递归二进制搜索功能不会为数组中不存在的值返回-1

我正在尝试使用递归进行二进制排序。 它与list[]结构数组中存在的值很好地配合。 但是,当我打入一个我不知道在数组内部的值时,而不是返回-1,而是返回垃圾值。 我在MVS中使用调试器跟踪了代码,但是可能确实存在(实际上确实是)看不到的东西。 有人可以告诉我为什么它不返回-1吗?
1回复

C++中的递归二进制搜索功能

我正在为C ++中的项目编写递归二进制搜索功能,由于某种原因,它无限运行并且无法正确执行。 我的代码如下: 有人可以帮我吗? 我不确定函数出了什么问题以及无限循环在哪里出现。
1回复

递归二进制搜索不返回预期值

关闭。 这个问题是题外话。 它当前不接受答案。 了解更多 。 想改善这个问题吗? 更新问题 ,使其成为Stack Overflow 的主题
3回复

二进制搜索功能

晚上好。 我正尝试重新开始编程,并决定自己做一些练习编码。 我目前正在尝试实现二进制搜索,但是我的代码中似乎存在一个连续循环。 有人可以告诉我发生了什么吗?