第一个函数我怎么看不出是递归函数,因为在函数体中没有调用自身,应该这样写
int dec(int *a, int n)
{
   if(n<=1)
   {
       if(a[1]>a[0])
          return 0;
       else
          return 1;
    }
    if(a[n]>a[n-1])
       return dec(a,n-1);
    else
       return 1;
}

解决方案 »

  1.   

    第一个,如果要我写我写的是:
     int dec (int a[],int n)
           {
       if (n<=1)  return 0;
       if (a[n]<a[n-1]) return 1;
       return dec(a,n-1);
           }但它的题目归定了第二个IF名句,我觉得有问题。
      

  2.   

    这道题好象是有问题,第二个if语句会造成只要a[1]>a[0]就会返回0,而不判断别的数了
    不过你写的程序也有问题,在c中,数组是从0开始的,要是按你所写不会比较a[0]与a[1]的.可以这样做:
    int dec(int a[],int n)
    {
      if(n<=1) return 0;
      return (a[n-1]<=a[n-2])?1:(dec(a,n-1));
    }
    因为前n个数的下标是0至n-1的.