试用C语言写出求数组a[0~n]中最大值的递归程序
时间: 2023-06-17 08:05:58 浏览: 78
以下是用C语言写的递归程序,用于求数组a[0~n]中最大值:
```
#include <stdio.h>
int max(int a[], int n) {
if (n == 1) {
return a[0];
} else {
int m = max(a, n - 1);
return (a[n - 1] > m) ? a[n - 1] : m;
}
}
int main() {
int a[] = {5, 7, 3, 9, 2, 8, 4, 1, 6};
int n = sizeof(a) / sizeof(int);
printf("The maximum element in the array is %d\n", max(a, n));
return 0;
}
```
该程序中的 `max` 函数是递归函数,用于找出数组中的最大元素。如果数组中只有一个元素,则返回该元素;否则,递归调用 `max` 函数来找出前 n-1 个元素中的最大元素,并将其与第 n 个元素进行比较,返回较大的那个元素。在主函数中,我们定义了一个数组 `a`,并计算出其大小,然后调用 `max` 函数来找出数组中的最大元素,并输出结果。
相关问题
用C语言写一个递归求整型数组中前n个元素的最大值的函数
int max(int array[],int n)
{
if(n == 1)
return array[0];
else
{
int m = max(array, n-1);
if(m > array[n-1])
return m;
else
return array[n-1];
}
}
写出实现求数组平均值的c语言递归代码
可以!这是一个常见的问题,以下是求平均值的C语言递归代码:
```c
#include <stdio.h>
float average(float arr[], int size) {
// 递归结束条件
if (size == 1) {
return arr[0];
} else {
// 递归调用
float sum = arr[size - 1] + average(arr, size - 1) * (size - 1);
return sum / size;
}
}
int main() {
float arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
float avg = average(arr, size);
printf("Average of the array is %f", avg);
return 0;
}
```
希望我的回答对你有所帮助!下一个问题是什么呢?我准备好了!