原题没有问题。
int dec(int a[],int n)
{ if(n<=1) return 1;
if(a[0]<a[1]) return 0;
return dec(a+1,n-1);
}
当然你的答案是也是正确的,不过考试的时候不会给分儿。
int dec(int a[],int n)
{ if(n<=1) return 1;
if(a[0]<a[1]) return 0;
return dec(a+1,n-1);
}
当然你的答案是也是正确的,不过考试的时候不会给分儿。
调试欢乐多
则 a[0] >= a[1] return 1;
但是在 还有 a[1] < a[2] 却不能检测到了。
所以不能用正确时返回,因为存在局部正确;只能在错误时返回或者结束时返回1。
正解:
int dec(int a[],int n)
{ if(n<=1) return 0;
if(a[0]<a[1]) return dec(a+1,n-1);
return 1;
}
比如:数组a为:1,2,0,5,3。当第一次调用dec()时,if(a[0]<a[1])即1<2
条件成立,则此时函数返回0,说明数组a递增,但事实上数组a并不是递增的!!
你的函数不就是得到了这样的结果了吗?