设n为正整数。试确定下列各程序段中前置以记号@的语句的频度:(5) for(i=1; i<=n; i++) {
for(j=1; j<=i; j++) {
for(k=1; k<=j; k++)
@ x += delta;
}
答案是
(5) 1+(1+2)+(1+2+3)+...+(1+2+3+...+n),
看不懂,求解释?谢谢
设n为正整数。试确定下列各程序段中前置以记号@的语句的频度:
答案:2 悬赏:20 手机版
解决时间 2021-03-11 20:15
- 提问者网友:原来太熟悉了会陌生
- 2021-03-10 19:56
最佳答案
- 五星知识达人网友:猎心人
- 2021-03-10 20:53
for(i=1; i<=n; i++)
{
for(j=1; j<=i; j++)
{
for(k=1; k<=j; k++)
@ x += delta;
}
}这个有什么不明白的么,@那一句到底被执行了多少次,取决于n的大小,当n=1时,@那一句执行1次,当n=2时,执行的次数等于1+(1+2)=4,当n=3时,执行的次数为1+(1+2)+(1+2+3)=10次,n=4时执行1+(1+2)+(1+2+3)+(1+2+3+4)=20次,然后n没有赋值的时候,就是n=n时,就是1+(1+2)+(1+2+3)+...+(1+2+3+...+n),看明白了么?
{
for(j=1; j<=i; j++)
{
for(k=1; k<=j; k++)
@ x += delta;
}
}这个有什么不明白的么,@那一句到底被执行了多少次,取决于n的大小,当n=1时,@那一句执行1次,当n=2时,执行的次数等于1+(1+2)=4,当n=3时,执行的次数为1+(1+2)+(1+2+3)=10次,n=4时执行1+(1+2)+(1+2+3)+(1+2+3+4)=20次,然后n没有赋值的时候,就是n=n时,就是1+(1+2)+(1+2+3)+...+(1+2+3+...+n),看明白了么?
全部回答
- 1楼网友:白昼之月
- 2021-03-10 22:25
(4) i=1时,第二个for语句执行n次;i=2时,第二个for语句执行n-1次;i=3时,第二个for语句执行n-2次...... i=n时,第二个for语句执行1次。
所以语句频度=n+(n-1)+(n-2)+...+1=n(n+1)/2
(5) 原理与(4)类似
所以语句频度=1+(1+2)+(1+2+3)+...+(1+2+3+...+n)=n(n+1)(2n+3)/12
(8) 分析每一次循环可以发现,当循环执行10次后x>100,y方才减1,此时x被复原为91;
如此下去,由于每执行10次循环才使y减1,所以循环体执行100*10次,也就是说if语句判断执行了1000次(但里面的y--执行了100次)。
所以语句频度=1100
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯