求最长上升子序列所有输出都是0,不知道该怎么改

#include<stdio.h>
int sl(int num[],int a)
{
    int p[1005],b,c;
    for(b=a-1;num[a]<=num[b]&&b>=0;b--)
    if(b>=0)
    {
        p[a]++;
        return p[a]+sl(num,b);
    }
    else
    return p[a];
}
int main()
{
    int n;
    while(scanf("%d",&n)==1)
    {
        int number[1005],po[1005];
        for(int m=0;m<n;m++)
        {
            scanf("%d",&number[m]);
        }
        for(int i=0;i<n;i++)
        {
            po[i]=sl(number,i);
        }
        int max=po[0],min;
        for(int i=1;i<n;i++)
        {
            if(max<po[i])
            {
                min=max;
                max=po[i];
                po[i]=min;
            }
        }
        printf("%d\n",max);
    }
}

求最长上升子序列所有输出都是0
求指正