c语言实现求一组数中的第二大数问题:用递归算法实现从一组数据中找出第二大的数,并将该数进行返回,在主函数中输入一些数据,并通过调用该递归函数求出第二大的数,并将结果输出。
时间: 2024-03-31 19:23:28 浏览: 67
#include<stdio.h>
int findSecondLargest(int arr[], int n, int largest)
{
int secondLargest;
if(n == 0) // 数组为空
return -1;
else if(n == 1) // 数组只有一个元素
return -1;
else if(n == 2) // 数组只有两个元素
{
if(arr[0] > arr[1])
return arr[1];
else
return arr[0];
}
else // 数组有三个及以上元素
{
if(arr[n-1] > largest) // 如果当前元素比最大值还大
{
secondLargest = largest; // 将最大值作为次大值
largest = arr[n-1]; // 更新最大值
}
else if(arr[n-1] > secondLargest) // 如果当前元素比次大值大但比最大值小
secondLargest = arr[n-1]; // 更新次大值
return findSecondLargest(arr, n-1, largest, secondLargest); // 递归处理前n-1个元素
}
}
int main()
{
int n, i;
printf("请输入数组的大小:");
scanf("%d", &n);
int arr[n];
printf("请输入%d个数:", n);
for(i = 0; i < n; i++)
scanf("%d", &arr[i]);
int secondLargest = findSecondLargest(arr, n, arr[0], arr[0]); // 调用递归函数
if(secondLargest == -1)
printf("没有第二大的数");
else
printf("第二大的数是%d", secondLargest);
return 0;
}
阅读全文