LOOP3: DJNZ R2,LOOP3;
————执行了37次没有错误的
LOOP2: PUSH 02H
LOOP3: DJNZ R2,LOOP3;
POP 02H;
DJNZ R2,LOOP2;
————执行的却是36+35+34+.......+1=36*(36+1)/2次;
同样类推:
LOOP1: PUSH 02H;
LOOP2: PUSH 02H;
LOOP3: DJNZ R2,LOOP3;
POP 02H;
DJNZ R2,LOOP2;
POP 02H;
DJNZ R2,LOOP1;
————执行的就是36*(36+1)/2+35*(35+1)/2+34*(34+1)/2.....+1*(1+1)/2次;
数字不一定正确,但是差不多就是这个思路了。依次类推,最好编一个高级程序看一下吧。
问题不要想太简单了,另外这类题目拿来玩玩可以,别写在程序里,被人骂死了。
我没有认真思考,仅代表一个不成熟的思路,如果错误请指正!
main()
{
int push1,push2,push3;
int r2;
long counter;
counter=0;
r2=37;
do{
push1=r2;
do{
push2=r2;
do{
push3=r2;
do{
counter++;
r2--;
}while(r2> 0);
r2=push3;
r2--;
}while(r2> 0);
r2=push2;
r2--;
}while(r2> 0);
r2=push1;
r2--;
}while(r2> 0);
printf("counter=%ld\n",counter);
printf("time=%ld\n",counter*4);
return 0;
}
counter=91390
time=365560
考虑到还要加上其他语句的执行时间,COUNTER在每个循环外加上一定值,比如在每个循环外让counter+=3,那么时间就大约484108uS=0.484s了。
如果我的思路有错误,请指正。