用递归法求数组的最大值。 函数接口定义: 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
时间: 2023-11-27 17:53:39 浏览: 143
可以使用递归的思想,将数组分为两部分,分别求左右两部分的最大值,然后比较两部分的最大值,返回较大的一个。
具体实现如下:
```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;
}
```
阅读全文