6-3 用递归法求数组的最大值
时间: 2023-11-28 20:47:40 浏览: 76
可以使用递归法来求数组的最大值,具体步骤如下:
1. 定义一个函数 `find_max(arr, n)`,其中 `arr` 是待查找的数组,`n` 是数组长度。
2. 如果数组长度为 1,直接返回该元素值。
3. 否则,将该数组分为两个子数组,左子数组为 `arr[0:n//2]`,右子数组为 `arr[n//2:n]`。
4. 分别对左右子数组调用 `find_max()` 函数,返回左子数组的最大值和右子数组的最大值。
5. 比较两个子数组的最大值,返回较大值作为整个数组的最大值。
以下是示例 Python 代码实现:
```python
def find_max(arr, n):
if n == 1:
return arr[0]
else:
left_max = find_max(arr[0:n//2], n//2)
right_max = find_max(arr[n//2:n], n-n//2)
return max(left_max, right_max)
```
调用该函数:
```python
arr = [1, 2, 3, 4, 5, 6, 7]
n = len(arr)
print(find_max(arr, n)) # 输出 7
```
相关问题
用递归法求数组的最大值
好的,这是一个计算题,可以回答。要求数组的最大值可以通过递归方法实现。首先判断数组是否只有一个元素,若是,则该元素为最大值;如果有多个元素,则将数组从中间分开,递归求左右两侧的最大值,最终比较左右两侧的最大值,取其中的较大值为整个数组的最大值。
用递归法求数组的最大值.函数接口定义:int amax
(int *arr, int n),其中arr为整型数组,n为数组长度。下面是递归实现的代码:
```c++
int amax(int *arr, int n) {
if (n == 1) {
return arr[0];
}
int max = amax(arr, n - 1);
if (max > arr[n - 1]) {
return max;
} else {
return arr[n - 1];
}
}
```
首先,当数组长度为1时,直接返回数组中唯一的元素。
否则,先递归求出前n-1个元素的最大值,然后将这个最大值与第n个元素进行比较,返回更大的那个。
注意,这里用到了三目运算符,可以简化代码。