关于《程序员》2000年考题下午题函数1.2、2.1的问题。
关于《程序员》2000年考题下午题函数1.2、2.1的问题。
问题如下:
【函数1.2说明】
递归函数 dec(int a[],int n) 判断数组 a[] 的前 n 个元素是否是不递增的。不递增返
回 1 ,否则返回 0 。
【函数1.2】
int dec(int a[],int n)
{ if (n <= 1) __(4)__;
if (a[0] < a[1]) return 0;
return __(5)__;
}
答案是:
int dec(int a[],int n)
{ if (n <= 1) return 1;
if (a[0] < a[1]) return 0;
return dec(a+1,n-1);
}
结果我在TC里面输入如上代码,运行时,发现只要我输入的数组中第0、1个数组是递增,函数就输出0,后面的无论输入什么。如果第0、1个数组非递增,无论后面输入什么,函数都输出1,这与题目的要求不相符。分析程序,if(a[0]<a[1]) return (); 一句好像有问题,这句判断使程序无论输入的第2、3……个是否递增,只要 a[0]<a[1],函数都输出0。
这段程序是否有问题呢?应该怎样改呢?请指教。