4.编写一个实验程序,输入一个正整数n(n>5),随机产生n个0~99的整数,采用递 归算法求其中的最大整数和次大整数。
时间: 2024-12-12 21:28:22 浏览: 10
为了编写一个递归算法来寻找一组随机整数中的最大值和次大值,我们需要分两部分来考虑:首先找到最大值,然后在剩余的元素中找到次大值。这里是一个Python示例代码:
```python
import random
def find_max_min(arr, index=0, max_num=None, second_max=None):
# 基线条件:如果索引等于数组长度,则返回当前最大值和次大值
if index == len(arr):
if max_num is None or arr[index] > max_num:
max_num, second_max = arr[index], max_num
elif second_max is None or arr[index] > second_max and arr[index] < max_num:
second_max = arr[index]
return max_num, second_max
# 递归处理下一个元素
new_max, new_second_max = find_max_min(arr, index + 1, max_num, second_max)
# 更新最大值和次大值
if arr[index] > new_max:
new_second_max = new_max
new_max = arr[index]
elif arr[index] > new_second_max and arr[index] != new_max:
new_second_max = arr[index]
return new_max, new_second_max
def main():
n = int(input("请输入一个大于5的正整数: "))
numbers = [random.randint(0, 99) for _ in range(n)]
print(f"随机生成的{n}个整数是: {numbers}")
max_value, second_max_value = find_max_min(numbers)
print(f"最大整数是: {max_value}, 次大整数是: {second_max_value}")
if __name__ == "__main__":
main()
```
这个函数通过递归遍历数组,每次比较当前元素和当前最大值以及次大值,更新这两个变量。当遍历结束后,返回的就是整个数组中的最大值和次大值。
阅读全文