x=0;y=0; for (int i=1;i<=n;i++) for (int j=1;j<=i;j++){ for (int k=1;k<=j;k++) x=x+y;

如题所述

第1个回答  2012-09-18

  从两个方面对你的问题进行解答:

  1.实验。令x=0,y=1,每运行一次x=x+y,x都会加1,所以最后x的值就是其运行值。测试程序如下:

  运行结果:


  2、从理论说明。外层给定一个n,内部两层就会循环1+2+3+....+n次,所以总的循环次数为:1+(1+2)+(1+2+3)+(1+2+3+4)+.....(1+2+3+4+.....+n).这个结果等于多少呢?请看下面数学证明。


    证明过程:

    数列各项是:

  1

  1+2

  1+2+3

  ……

  1+2+3+……+N

  由于:

  1+2+3+……+N=N(N+1)/2=(N²+N)/2

  1²+2²+……N²=N(N+1)(2N+1)/6

  所以数列各项加起来就是:

  S(N)=(1²+1)/2+(2²+2)/2+(3²+3)/2+……+(N²+N)/2

  =[(1²+2²+3²+……+N²)+(1+2+3+……+N)]/2

  =[N(N+1)(2N+1)/6+N(N+1)/2]/2

  =N(N+1)[(2N+1)/6+1/2]/2

  =N(N+1)(N+2)/6

    综上,结果为N(N+1)(N+2)/6,时间复杂度为O(N的立方)


x=0;y=0; for (int i=1;i<=n;i++) for (int j=1;j<=i;j++){ for (in...
1.实验。令x=0,y=1,每运行一次x=x+y,x都会加1,所以最后x的值就是其运行值。测试程序如下:运行结果:2、从理论说明。外层给定一个n,内部两层就会循环1+2+3+...+n次,所以总的循环次数为:1+(1+2)+(1+2+3)+(1+2+3+4)+...(1+2+3+4+...+n).这个结果等于多少呢?请看...

for(int i=0;i<n;i++){ for(int j=i;j<n;j++){ ...} }的时间复杂度为多...
i++就是i自增1的意思。每次循环后i都会自动加1,直到i>=3时就退出循环。循环几次,如分别是i=0,1,2,3,4,5时执行一次printf("a[%d]=%d\\n",i,a[i]);。实例使用了嵌套循环输出2~100之间的素数如下:!\/usr\/bin\/python# -*- coding: UTF-8 -*-i = 2while(i < 100): j =...

For(i=1;i<n;i++) For(j=1;j<i;j++) For(k=1;k<j;k++) X=x+1; 算出...
里面的表达式是1,因为内部只有x使用了1次 于是化简为两个希格玛的嵌套公式,外层是i从1到n-1,内层是j从1到i-1 里面的表达式是1+2+...+(j-1)=j*(j-1)\/2 继续往下化简就有点麻烦了,涉及到高中数学的特殊数列的求和,你先看看这些能懂不?

...for(int i=1;i<=10;i++){ for()int j=1;j<=i;j++} 的含义吗?_百度...
for(int i=1;i<=10;i++) 这个代表定义一个变量i,并赋给它初始值为1,分号中间的代表循环的条件,最后一个代表循环的内容。就是说,第一次循环:i的值为1,符合i<=10这个条件,就先执行中括号里面的东西(稍后再讲),然后再执行i++(就是i加一),这样到了下一次循环,i的值就为2,又...

for(i=0;i<n;i++) { for(j=0;j<i;j++) { for(k=0;k<j;k++) x=x+2...
比如你的程序里面就一个for循环, 例如 for(int i=0;i<10;i++) sum+=i;那么这个程序的时间复杂度就是 O(n) ,一般不写成O(10) 这些具体的数字。如果上面的for循环里再嵌套一个for循环,那么就是O(n2) ,n2是指n的平方。这种是最简单的情况,另外一些比较常见的又没这么简单的就是数据...

...{ int x=0,y=0,i; for (i=1;;++i) { if (i%2==0) {x++;continue;}...
你的代码太乱了,整理一下吧,答案是8.main(){ int i,j,x=0;for(i=0;i<2;i++){ x++;for(j=0;j<=3;j++){ if(j%2)continue;x++;} x++;} printf ("x=%d\\n",x);} 进入第一个for循环时x++后x=1时进入第2个for循环,if里的语句是j能被2整除时结果为0,if里的值为0...

...main() { int k=0,i,j; for(i=1;i<=3;i++) { for(j=1;j<=3;j++...
三个数和为6.此时k=6+1+6+2 当i=3时,j从1开始加到3共1,2,3三个数,三个数和为6.此时k=6+1+6+2+3 所以最后k的值为6*3+1+2+3=24.因为 i 和 j 最后都执行了一次自加,i 和 j 的限制条件又相同,所以最后 i 和 j 的值都为4.最终结果:i=4,j=4 ,k=24 ...

...i=1;i<=9;i++){ for(int j=1;j<=i;j++){。。。为什么j要小于等于i...
就像当 i = 5,也就是说,在循环到第五行的时候,我们要给 这一行添加 j 个数据,那么定义成 j <= i 也就是说,j 最大是5, 那么第五行就是要打印5个数据了。看看打印出来的东西:(第五行)1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 ...

...for(i=0;i<n-1;i++){ k=i; for(j=i+1;j<n;j++) 读程序写结果?_百度...
输出 1,2 2,3 2,4 3,1 3,2

...void main() { int i,j,k; for(i=1;i<=10;i++) printf("%4d",i...
for(k=1;k<=4*k-4;k++)这条语句,k只要是大于1,并且4*k没有溢出,k<=4*k-4这个条件永远为真,不明LZ这样写的具体含义,是否应该再使用一个变量用于控制循环?for(j=1;j=i;i++)这条语句,j=i是个赋值语句,只要i不是0,永远为真,LZ是否要写成j<=i?

相似回答
大家正在搜