C語言for循環(huán)

今天學(xué)習(xí)算法的程序步計算計算時間復(fù)雜度的時候,這樣一段程序的時間復(fù)雜度為2n + 3。(其中的count++就是指的程序步的個數(shù))

float Sum(float list[], const int n) {
  float tempsum = 0.0;
  count++;  // 針對賦值語句
  for (i = 0; i < n; i++) {
    count++;   //針對for循環(huán)語句
   tempsum += list[i];
    count++;      //賦值語句 
}
  count++;   //針對for循環(huán)的最后一次執(zhí)行
  count++;   // return語句
  return tempsum; 
}

在這里,我不是很清楚為什么代碼倒數(shù)第三行會對for循環(huán)的最后一次執(zhí)行做一次計數(shù)。
最后,我又去學(xué)習(xí)了下for循環(huán),發(fā)現(xiàn)代碼打的久了,竟然忘記最基本的東西了。

沒錯,就是for循環(huán)的表達(dá)式執(zhí)行順序。

假設(shè)有這樣一段代碼

for (表達(dá)式1, 表達(dá)式2, 表達(dá)式3){
  內(nèi)部嵌套語句...
}

執(zhí)行順序是:

  1. 計算表達(dá)式1
  2. 計算表達(dá)式2, 若結(jié)果為true,則進(jìn)行第三步;若結(jié)果為false,則跳至第五步
  3. 執(zhí)行內(nèi)部嵌套語句
  4. 計算表達(dá)式3
  5. 退出循環(huán) quit the circle

也就是說,對于for(i = 0; i < n; i++)這條語句來說,內(nèi)部嵌套語句一共執(zhí)行了n次,但是表達(dá)式2也就是i < n這個條件,一共判斷了n+1次。

這里的程序步計算的時候,針對for循環(huán)的最后一次執(zhí)行,說的就是這個判斷語句

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容