i=1 s语句执行1次;
i=2 s语句执行2次;
i=3 s语句执行3次;
以此类推i=n-1 s语句执行n-1次;
则总的执行次数:0+1+2+3+。。。+n-1=n(0+n-1)/2=n*(n-1)/2(等差数列公式)
(1)语句1,从n执行到1共进行n次,但到1时没有直接终止,因为1还是满足条件的,下一次执行时i从1减到了0,此时i=0仍然执行了语句1,执行后不满足条件,所以共执行了(n+1)次,对应的i分别是(n,n-1,…,2,1,0)(2)根据1中所述,i=0时执行语句1,不满足条件,所以不会执行语句2,所以语句2还是只执行了n次,对应的i分别是(n,n-1,…,2,1)
(3)与上面逻辑是相对应的(以i=n举例):当i=n时,j先取n,执行语句3,满足条件,执行语句4;再取n-1,执行语句3,不满足条件,不执行语句4,所以语句3执行了2次,语句4执行了1次,依次类推:
i=n时,语句3执行2次,语句4执行1次
i=n-1时,语句3执行3次,语句4执行2次
…
i=1时,语句3执行(n+1)次,语句4执行n次
综上所述:
语句3共执行:2+3+…+(n+1)=n(n+3)/2
语句4共执行:1+2+…+n=n(n+1)/2
(4)有一点要注意的是,语句3是基于语句2执行的,所以语句1比语句2多执行的那一步,语句3是不执行的。
可以的,吧“每###毫秒”当成是一个基数。你自己在运行时里面做一个临时变量。如果你另外的语句执行频率要比比基数还慢,那你就用这个临时变量进行累加。达到条件后再执行你需要的部分,反之亦然欢迎分享,转载请注明来源:内存溢出
评论列表(0条)