写一个函数可以读入n(0<n<100)个整数,并求出这n个整数中的最大值。 此题要求递归求解,且不允许使用全局变量。在此题的所有提交中只要出现非递归提交,无论其他提交是否是递归求解此题均为0分。C语言
时间: 2024-11-22 21:40:33 浏览: 2
求一组数组的两个最大值和两个最小值 分治法
4星 · 用户满意度95%
在C语言中,我们可以使用递归的方式编写一个函数来找到数组中的最大值。这里有一个示例,函数名为`find_max`:
```c
#include <stdio.h>
// 递归函数:找出数组中的最大值
int find_max(int arr[], int start, int end) {
if (start == end) { // 当只有一个元素时,返回该元素作为最大值
return arr[start];
} else {
// 递归地比较第一个元素和第二个元素之后的最大值
int max1 = arr[start];
int max2 = find_max(arr, start + 1, end);
// 返回当前元素与下一个元素较大者
return max1 > max2 ? max1 : max2;
}
}
int main() {
int n, num;
scanf("%d", &n); // 读取数组长度
assert(n >= 1 && n <= 100); // 确保n在给定范围内
int* arr = malloc(n * sizeof(int)); // 动态分配内存
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 使用递归找到最大值
int max_value = find_max(arr, 0, n - 1);
printf("The maximum value is: %d\n", max_value);
free(arr); // 释放内存
return 0;
}
```
这个程序首先判断数组中只有一个元素的情况,然后递归地将数组分为两部分,每次比较前半部分的第一个元素和后半部分的最大值,最终返回整个数组的最大值。注意,由于题目要求不使用全局变量,所以这里动态分配了内存来存储数组。
阅读全文