请问一下各位dl我这个递归调用哪里有问题啊?


#include<iostream>

using namespace std;

int max(int a[],int n);

int main()
{
    int n;
    cin>>n;
    int a[n+1];
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        cout<<a[i];
    }
    int m;
    m=max(a[n+1],n);
    
    cout<<m;
    
    return 0;
}
int max(int a[],int n)//这里的n是指这数组里有多少个数
{
    int temp,max1;
    if(n>1)
    {
        temp=max(a,n-1);
        if(temp>=a[n])
        max1=temp;
        else
        max1=a[n];
    }
    else
    {
        max1=a[1];
    }
    return max1;
}

求解答!

19行, m=max(a,n);
a[n+1]是a数组第n+1个元素,max要求的是传入数组

有几个错误:
(1)第19行 m=max(a[n+1],n); 改成 m=max(&a[1],n);
(2)第31行if(temp>=a[n])改成if(temp>=a[n-1])
(3)第34行max1=a[n]改成max1=a[n-1]
(4)第38行max1=a[1];改成max1=a[0];