給程式碼判斷特定行執行次數

 請計算且說明下列片斷程式中 x = x + 1 的執行次數

for (i=1; i<=n; i++) {

 k=i+1; 

 do { 

 x=x+1; 

 } while (k++ <= n); 

 }

雖然簡單,變數變化與描述格式(縮排)要寫清楚。

 假設n=10

當i=1時,

  k=2,x=x+1; 2<=10, k=3

  k=2,3,4,5,6,7,8,9,10->執行x=x+1,9次

當i=2時,

  k=3,x=x+1; 3<=10, k=4

  k=3,4,5,6,7,8,9,10->執行x=x+1,8次

當i=3時,

  k=4,x=x+1; 4<=10, k=5

  k=4,5,6,7,8,9,10->執行x=x+1,7次

當i=4時,

  k=5,x=x+1; 5<=10, k=6

  k=5,6,7,8,9,10->執行x=x+1, 6次

當i=5時,

  k=6,x=x+1; 6<=10, k=7

  k=6,7,8,9,10->執行x=x+1,5次

當i=6,

  k=7,x=x+1; 7<=10, k=8

  k=7,8,9,10->執行x=x+1,4次

當i=7,

  k=8,x=x+1; 8<=10, k=9

  k=8,9 ,10->執行x=x+1,3次

當i=8,

  k=9,x=x+1; 9<=10, k=10

  k=9 ,10->執行x=x+1,2次

當i=9,

  k=10,x=x+1; 10<=10, k=11

  k=10->執行x=x+1,1次

當i=10,

  k=11,x=x+1; 11<=10, k=12 跳出

  k=11->1次

X=x-1執行次數為

1+2+…+(n-1)在加上一次

((1+(n-1))(n-1))/2+1=(n(n-1))/2+1

所以n筆資料會執行(n(n-1))/2+1次


沒有留言:

張貼留言

寫下幸福點子吧!