呵呵,好久没来了,一上来就看到竟然还有人与我(当然还人kaikai^_^,好久不见,kaikai可好?)一样迷醉这种混乱代码。 窃以为,顶楼的程序与5楼的程序不可同日而语,5楼的程序的确是精妙无比。顶楼的程序与其相比差远了。5楼的程序的位操作运算的运用技巧及程序的递归流程让人惊叹! 略略做一些简化,可以看得清楚一点: #include<stdlib.h> #include<stdio.h> long y=0 ;/*增加变量一,控制递归次数*/ int temp; /*增加临时变量二?/ main(head,ptr,arg,tmp,value) int head,arg,tmp,value ; /*初值:head=1,其余arg,tmp,value为随机值*/ /*head = I,arg = O0,tmp = OO,value = l */
char**ptr ; /*ptr = O*/ { if(y++>90000)return ; if(head<=1) { if(head<=0) { if(head>=-2) { if(head>=-1) { if(!tmp) /*tmp=0*/ { return !head ; } else { /*tmp!=0*/ if(tmp%2) { /*tmp=奇数*/ tmp=main(head,ptr,arg,tmp>>1,value); tmp=main(head-1,ptr,tmp,tmp,value); tmp=main(head-1,ptr,arg,tmp,value); if(!(tmp-!head||head)) return value-1 ; else return tmp ; } else { /*tmp=偶数*/ tmp=main(head,ptr,arg,tmp>>1,value); if(!(tmp-value+!head||head))return value-1 ; else return main(head-1,ptr,tmp,tmp,value); } } } else { return(arg+tmp)%value ; } } else { temp=main(0,ptr,arg,tmp,-head); temp=temp+head+1; if(temp) { temp=1; } else { temp=printf("%d ",-head); fflush(stdout); }
return main(head-2,ptr,arg,tmp+1,temp);
} } else { return main(-3*head,ptr,2*head,head,0); } } else { /*楼主说的错误是这里少一句或几句,但现在可运行,不影响结果*/ } }
九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。 -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。 -毛泽东