编写递归函数,求数组元素的最大值。

问题遇到的现象和发生背景

数组为整型数组。主函数中输入数组元素,以-9999为结束符,-9999不会是数组的元素。数组元素个数不超过100。 输入:若干整数,以空格或换行隔开,以-9999结束。-9999不是数组元素

问题相关代码,请勿粘贴截图
#include <stdio.h>
int f(int a[],int n){  
    int max = a[0];
    for(int k=1;k<n;k++){
        if(a[k]>max){
            max = a[k];
        }
    }
    return max;
}
int    main()
{
    int a[200];int i=0,j=0; 
    while(1){
        scanf("%d",&a[i++]);
        char c=getchar();
        j++;
        if(c=='\n'){
            break;
        }
   }
    printf("%d", f(a, j-1));
    return 0;
}

运行结果及报错内容

#编程语言: C
状态帮助,状态 (新窗口): 多个状态
评测时间: 2022年04月 30日 星期六 14:17 (14 秒之前)
信息: 用例1: 运行超时(此程序运行得太久了。)
用例2: 运行超时(此程序运行得太久了。)
用例3: 运行超时(此程序运行得太久了。)
用例4: 运行超时(此程序运行得太久了。)
用例5: Accepted
用例6: 运行超时(此程序运行得太久了。)
统计: 编译错误: 2
多个状态: 3
成功率: 0%
输出: testcase 0:
testcase 1:
testcase 2:
testcase 3:
testcase 4: 1567854
testcase 5:
自己在devC++上运行没问题,提交到moodle上显示这样

我的解答思路和尝试过的方法
我想要达到的结果

写一个可以实现你要的功能行吗?没看懂你题目的意思

#include <stdio.h>
int GetMax(int *arry,int len);
int main()
{
    int a[101]={0},num=1;
    while(a[num-1]!=-9999)
    {
        scanf("%d",&a[num]);
        num++;
    }
    printf("Max=%d",GetMax(a+1,num-1));
    return 0;
}

int GetMax(int *arry,int len)
{
    int i,max;
    max=arry[0];
    for(i=1;i<len;i++)
        if(max<arry[i])
            max=arry[i];
    return max;
}


你这个没有处理-9999的啊,而且题目说以空格或者换行隔开,你这个回车符直接结束了

望采纳,谢谢!

#include <stdio.h>
int f(int a[], int n) {
    int max = a[0];
    for (int k = 1; k < n; k++) {
        if (a[k] > max) {
            max = a[k];
        }
    }
    return max;
}
int    main()
{
    int a[200]; int i = 0, j = 0;
    while (1) {
        scanf_s("%d", &a[i++]);
        j++;
        if (a[i-1] == -9999) {
            break;
        }
    }
    printf("%d", f(a, j - 1));
    return 0;
}


递归函数有问题

int fun(int a[], int n) {
int max = a[n - 1];
if (n == 1) return max;
else {
max=max > fun(a, n - 1) ? max : fun(a, n - 1);
return max;
}
}