介绍
本实验将引导你通过递归的方式在数组中查找最大元素。该 C 程序将提示用户输入数组的大小,然后输入数组的元素,最后输出数组中的最大元素。
设置文件
首先,在 ~/project/ 目录下创建一个名为 main.c 的新文件。然后,将以下代码复制并粘贴到你的文件中,该文件包含了完成本实验所需的所有代码。
#include<stdio.h>
#define MAX 100
int getMaxElement(int []); // 接受一个整数数组作为参数
int size;
int main()
{
printf("\n\n\t\tLabEx - Best place to learn\n\n\n");
int arr[MAX], max, i;
printf("\n\n输入数组的大小:");
scanf("%d", &size);
printf("\n\n输入 %d 个元素\n\n", size);
for(i = 0; i < size; i++)
{
scanf("%d", &arr[i]);
}
max = getMaxElement(arr); // 将整个数组作为参数传递
printf("\n\n数组中的最大元素是 %d\n\n", max);
printf("\n\n\t\t\tCoding is Fun !\n\n\n");
return 0;
}
int getMaxElement(int a[])
{
static int i = 0, max =- 9999; // static int max=a[0] 是无效的
if(i < size) // 直到最后一个元素
{
if(max < a[i])
max = a[i];
i++; // 在下次迭代中检查下一个元素
getMaxElement(a); // 递归调用
}
return max;
}
理解代码
这个 C 程序由两个函数组成:main() 和 getMaxElement()。
2.1 函数 main()
- 声明一个名为
arr的数组来存储数组元素,并初始化变量:max用于存储数组中的最大元素,i用于维护函数的迭代。 - 提示用户输入数组的大小。
- 提示用户输入数组的元素。
- 调用
getMaxElement()函数,并将名为arr的数组作为参数传递。 - 输出存储在变量
max中的数组的最大元素。
2.2 函数 getMaxElement()
这是一个递归函数,用于返回数组中的最大元素。
- 声明一个静态值
i用于维护函数的迭代,并将其初始化为 0;声明一个静态值max用于存储数组中的最大元素,并将其初始化为一个非常小的值-9999。 - 检查
i的值是否小于数组的大小。 - 如果数组的第
i个元素的值大于当前max的值,则将max的值更新为数组的第i个元素的值。 - 将
i设置为下一个元素,并调用getMaxElement()函数,使该函数递归执行。
测试程序
要编译并运行代码,请在 ~/project/ 目录下打开终端,并按照以下步骤操作:
- 输入
gcc main.c以编译代码。 - 输入
./a.out以运行程序。 - 在提示符下,输入数组的大小并按
ENTER。 - 输入数组的元素,并在每个元素后按
ENTER。 - 程序将输出数组中的最大元素。
完整代码
#include<stdio.h>
#define MAX 100
int getMaxElement(int []); // 接受一个整数数组作为参数
int size;
int main()
{
printf("\n\n\t\tLabEx - Best place to learn\n\n\n");
int arr[MAX], max, i;
printf("\n\n输入数组的大小:");
scanf("%d", &size);
printf("\n\n输入 %d 个元素\n\n", size);
for(i = 0; i < size; i++)
{
scanf("%d", &arr[i]);
}
max = getMaxElement(arr); // 将整个数组作为参数传递
printf("\n\n数组中的最大元素是 %d\n\n", max);
printf("\n\n\t\t\tCoding is Fun !\n\n\n");
return 0;
}
int getMaxElement(int a[])
{
static int i = 0, max =- 9999; // static int max=a[0] 是无效的
if(i < size) // 直到最后一个元素
{
if(max < a[i])
max = a[i];
i++; // 在下次迭代中检查下一个元素
getMaxElement(a); // 递归调用
}
return max;
}
总结
干得漂亮!你已经成功完成了这个关于如何使用递归查找数组中最大元素的实验。现在你应该对如何使用递归查找数组中的最大元素有了很好的理解。做得好!



