为什么这个程序运行异常

题目编号:Exp06-Enhance01,GJBook3-10-05

题目名称:最大元素

题目描述:编写程序,用递归方法求解长度为n的整型数组中最大元素值。

输入:第一行输入一个正整数n(0<n≤100),表示数组的元素个数;第二行依次输入n个整数,作为数组的元素。

输出:最大元素的值。

样例1:

输入:
10
9 8 7 6 5 4 3 2 1 0
输出:
9
样例2:

输入:
10
0 1 2 3 4 5 6 7 8 9
输出:
9

我的答案

#include <stdio.h>
#include <stdlib.h>
int max(int a1[],int len1)
{
    if(len1>1)
    {if((max(a1,len1-1))>a1[len1-1])
        return max(a1,len1-1);
    else
        return a1[len1-1];
    }
    else
        return a1[len1-1];
}

int main()
{
    int a[200],n,i;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    int len=i;
    int max1=max(a,len);
    printf("%d",max1);
    return 0;
}


运行结果及报错内容 :

调用程序运行服务异常

这是为什么呢,以及如何解决?

谢谢!

递归超时了吧,n=100的时候,递归耗时较大

int max(int a1[], int len1) {
    if(len1 == 1)
        return a1[0];
    int m = max(a1,len1-1);
    if(m > a1[len1 - 1])
        return m;
    else return a1[len1-1];
}