下列程序段; for(i=2;i

58582 1年前 已收到1个回答 举报

pink250 花朵

共回答了18个问题采纳率:94.4% 举报

执行次数是 1 + ... + n -2 = (n-1)(n-2)/2,一般我们说时间复杂度是 O(n^2),去掉低次项

1年前 追问

9

58582 举报

当 i 从 2 递增到 n 时,j 不也是从 2 递增到 n 的么?为什么会是n-2的而不是n-1呢?小弟不甚明白??

举报 pink250

当i=n时,j=2,终值是<=i-1,也就是[2, i-1],那循环次数共有 (n-1)-2+1 = n-2次循环 如果是 终值是

58582 举报

“当i=n时,j=2,终值是<=i-1,也就是[2, i-1],那循环次数共有 (n-1)-2+1 = n-2次循环” 但是,当i=n时,第一个for语句 for(i=2;i<=n;++i)里面的 ++ i 不是已经执行了么?所以,j的终值应该是j<=(n+1)-1的呢?为什么还是[2, n-1]的? for语句执行顺序难道不是先判断循环条件难道执行循环条件后的语句的么?

举报 pink250

for的执行顺序是, 1. 赋初值 2. 判断终止条件 3. 循环体运行 4. 循环变量递增或递减,并跳转第2步 也就是说,循环体内一定满足 i<=n 及 j<=i-1
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 18 q. 0.031 s. - webmaster@yulucn.com