int i,j,k,counter=0;for (i = 1; i < n; i++) for (j = 0; j < i*i; j++) { counter++; //执行次数. if (j % i == 0) for (k = 0; k < j; k++) sum++; }红色部分不能忽略,if是for()运行的前提条件。而sum++;要执行多少次由它上面的for确定,是最近的for的执行语句。
没明白您要表达什么意思
就是说如果不包括红色部分的话这个程序会被执行 (2(n^3)-3(n^2)-n)/6 次 Big O 分析就是 O(n^3)现在我不知道加上红色那部分这个程序会被执行多少次
对于一个确定的i ,红色部分if语句被执行i次(即j%i==0有i次为真)所以if语句一共被执行1+2+3+...+n-1=n*(n-1)/2
[此贴子已经被作者于2006-8-23 20:48:07编辑过]
多谢楼上的也感谢soft_wind
不过我还是算不出这个程序总共被执行了多少次