如果中间有相等 3,2,1,1,1,1, 0 ,这不算降序,算无序了。。。
我重新优化了一下,虽改了一点点,但效率提高了很多;
#include "stdio.h"
int order(int dat[ ],int n)
//升序就输出return 1,降序输出-1,乱序输出0
{
int t=dat[1]-dat[0];
int r=t>0?1:(t<0?-1:0);
if (r==0||n<=2) // r==0 时,不管N多少,都不再递归下去,这大大优化了
return(r);
int r1=order(dat+1,n-1);
return (r1==r?r:0);
} // 这递归算法仅六行,够短的了 !!!!
main()
{
int dat[ ]={1,4,2,6};
printf("%d",order(dat,4));
}
我用C++BUILDER6试过了,我的递归是正确的
2019-07-17 22:55:07