C语言for循环

2020-05-05  本文已影响0人  lesifh

今天学习算法的程序步计算计算时间复杂度的时候,这样一段程序的时间复杂度为2n + 3。(其中的count++就是指的程序步的个数)

float Sum(float list[], const int n) {
  float tempsum = 0.0;
  count++;  // 针对赋值语句
  for (i = 0; i < n; i++) {
    count++;   //针对for循环语句
   tempsum += list[i];
    count++;      //赋值语句 
}
  count++;   //针对for循环的最后一次执行
  count++;   // return语句
  return tempsum; 
}

在这里,我不是很清楚为什么代码倒数第三行会对for循环的最后一次执行做一次计数。
最后,我又去学习了下for循环,发现代码打的久了,竟然忘记最基本的东西了。

没错,就是for循环的表达式执行顺序。

假设有这样一段代码

for (表达式1, 表达式2, 表达式3){
  内部嵌套语句...
}

执行顺序是:

  1. 计算表达式1
  2. 计算表达式2, 若结果为true,则进行第三步;若结果为false,则跳至第五步
  3. 执行内部嵌套语句
  4. 计算表达式3
  5. 退出循环 quit the circle

也就是说,对于for(i = 0; i < n; i++)这条语句来说,内部嵌套语句一共执行了n次,但是表达式2也就是i < n这个条件,一共判断了n+1次。

这里的程序步计算的时候,针对for循环的最后一次执行,说的就是这个判断语句

上一篇 下一篇

猜你喜欢

热点阅读