
我重新优化了一下,虽改了一点点,但清神效率提高了很多;
#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试过了,我的递归弯正清是正确的
汗,你的数组里都不给出数据怎么去判含扮断,还n-1,n-1是御陵多少?#include <stdio.h>
int main()
{
int a[]={1,2,3,4,5}
int i=0,m=0,n=0
if(a[i]>a[i+1])m++
else if(a[i]<a[i+1])n++
i++
if(i<sizeof a)main()//递规
if(m==0)printf("单调递减")
else if(n==0)printf("单调递增")
else printf("无增减性")
return 0
}
由于你没有给出数组的值,所以我假设了几个,你可以根据需要改变它的值。递规本就是死循环,要注意控制它的结束镇老戚!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)