用递归法求数组的最大值.函数接口定义:int amax
时间: 2023-11-27 11:53:10 浏览: 98
(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个元素进行比较,返回更大的那个。
注意,这里用到了三目运算符,可以简化代码。
相关问题
用递归法求数组的最大值。 函数接口定义: int amax(int a[],int n); 其中 a 和 n 都是用户传入的参数。函数用递归法求数组 a 的最大值。 #include <stdio.h> int amax(int a[],int n) { } int main() { int a[10],i,max; for(i=0;i<10;i++) scanf("%d",&a[i]); max=amax(a,10); printf("max=%d\n",max); return 0; } 输入样例: 3 5 10 6 8 7 1 2 4 9 输出样例: max=10
可以使用递归的思想,将数组分为两部分,分别求左右两部分的最大值,然后比较两部分的最大值,返回较大的一个。
具体实现如下:
```c
int amax(int a[], int n) {
if (n == 1) { // 如果只有一个元素,直接返回该元素
return a[0];
} else {
int left_max = amax(a, n / 2); // 求左半部分的最大值
int right_max = amax(a + n / 2, n - n / 2); // 求右半部分的最大值
return left_max > right_max ? left_max : right_max; // 返回左右两部分的最大值中较大的一个
}
}
```
完整代码如下:
```c
#include <stdio.h>
int amax(int a[], int n) {
if (n == 1) { // 如果只有一个元素,直接返回该元素
return a[0];
} else {
int left_max = amax(a, n / 2); // 求左半部分的最大值
int right_max = amax(a + n / 2, n - n / 2); // 求右半部分的最大值
return left_max > right_max ? left_max : right_max; // 返回左右两部分的最大值中较大的一个
}
}
int main() {
int a[10], i, max;
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
max = amax(a, 10);
printf("max=%d\n", max);
return 0;
}
```
用递归实现返回长度为n的整型数组最大值的函数,函数声明如下:int maxValue(int A[],int n);
要使用递归实现返回长度为 `n` 的整型数组 `A[]` 中的最大值,你可以定义一个递归函数 `maxValue`。这个函数会检查当前元素是否大于已知的最大值,如果是,则更新最大值;然后对剩余的数组(如果还有)递归调用自身。递归的基本情况是当数组只剩下一个元素时,直接返回该元素就是最大值。
以下是一个递归实现的例子:
```c
#include <stdio.h>
// 定义递归函数
int maxValue(int A[], int n) {
// 基本情况:只有一个元素
if (n == 1) {
return A[0];
}
// 递归情况:比较当前元素和下一个元素中的较大者
else if (n > 1) {
return (A[n - 1] > A[n - 2]) ? A[n - 1] : maxValue(A, n - 1);
}
}
int main() {
int arr[] = {5, 10, 1, 8, 3};
int n = sizeof(arr) / sizeof(arr[0]);
int max = maxValue(arr, n);
printf("The maximum value in the array is: %d\n", max);
return 0;
}
```
在这个例子中,`main()` 函数创建了一个数组并调用了 `maxValue()` 来找出最大值,然后打印结果。
阅读全文