编写一个程序,用递归法:递归法查找算法非常适合在大量元素中查找指定的元素,要求序列已经排好序(这里假设按从小到大排序),首先测试中间位置上的元素是否为想查找的元素,如果是则结束算法;如果序列中间位置上的元素比要查找的元素小,
时间: 2023-12-03 09:43:32 浏览: 46
则在序列的右半部分继续查找;否则在序列的左半部分继续查找。如果序列中不存在该元素,则算法返回不存在。
以下是一个使用递归法查找算法的示例代码:
```python
def binary_search(arr, low, high, x):
if high >= low:
mid = (high + low) // 2
if arr[mid] == x:
return mid
elif arr[mid] > x:
return binary_search(arr, low, mid - 1, x)
else:
return binary_search(arr, mid + 1, high, x)
else:
return -1
```
其中,`arr`为要查找的有序序列,`low`和`high`为序列的起始和结束索引,`x`为要查找的元素。如果找到了该元素,则返回其索引位置;否则返回-1表示不存在。
举个例子,假设要在有序序列`[1, 2, 3, 4, 5, 6, 7, 8, 9]`中查找元素`5`,则可以调用`binary_search`函数:
```python
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
x = 5
result = binary_search(arr, 0, len(arr)-1, x)
if result != -1:
print("元素在索引 %d" % result)
else:
print("元素不存在")
```
输出结果为:
```
元素在索引 4
```
说明元素`5`在序列中的索引位置为`4`。
阅读全文