python两路递归求最大值
时间: 2023-10-13 12:18:01 浏览: 83
以下是两种递归方式求最大值的 Python 实现:
1. 分治法
使用分治法求最大值时,将序列分成左右两半,分别递归求出左半部分和右半部分的最大值,然后再比较两个最大值,取其中较大的一个作为整个序列的最大值。
```python
def max_num(arr):
n = len(arr)
if n == 1:
return arr[0]
else:
mid = n // 2
left_max = max_num(arr[:mid])
right_max = max_num(arr[mid:])
return max(left_max, right_max)
```
2. 递归法
使用递归法求最大值时,将序列的第一个元素作为当前最大值,然后递归地比较当前最大值和其余元素,如果遇到比当前最大值更大的元素,则更新当前最大值。
```python
def max_num(arr):
n = len(arr)
if n == 1:
return arr[0]
else:
current_max = arr[0]
rest_max = max_num(arr[1:])
return max(current_max, rest_max)
```
以上两种方法的时间复杂度都为 O(nlogn),其中分治法的空间复杂度稍微优于递归法。
阅读全文