应用递归调用方法,从给定的一列整数中找出最大和最小的数.求求了跪求一个代码

如题所述

以下是一份简单的递归调用方法的 C 代码,用于找出给定整数数组中的最大值和最小值:
#include <stdio.h>
// 定义递归函数,找到数组中的最大值和最小值
void findMinMax(int arr[], int start, int end, int *min, int *max)
{
// 如果数组中只有一个元素
if (start == end) {
*min = arr[start];
*max = arr[start];
return;
}
// 如果数组中有两个元素
if (end - start == 1) {
if (arr[start] > arr[end]) {
*max = arr[start];
*min = arr[end];
} else {
*max = arr[end];
*min = arr[start];
}
return;
}
// 如果数组中有超过两个元素
int mid = (start + end) / 2;
int leftMin, leftMax, rightMin, rightMax;
findMinMax(arr, start, mid, &leftMin, &leftMax);
findMinMax(arr, mid + 1, end, &rightMin, &rightMax);
if (leftMin < rightMin) {
*min = leftMin;
} else {
*min = rightMin;
}
if (leftMax > rightMax) {
*max = leftMax;
} else {
*max = rightMax;
}
}
int main()
{
int arr[] = {3, 2, 5, 1, 4, 6, 7, 8, 10, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int min, max;
findMinMax(arr, 0, n - 1, &min, &max);
printf("最小值:%d\n", min);
printf("最大值:%d\n", max);
return 0;
}
这里用到了分治算法,将数组分成两个部分,分别找出左半部分和右半部分的最大值和最小值,然后比较左半部分的最小值和右半部分的最小值,找出整个数组的最小值;同样比较左半部分的最大值和右半部分的最大值,找出整个数组的最大值。
温馨提示:答案为网友推荐,仅供参考
相似回答