本帖最後由 李泳霖 於 2022-6-11 11:07 編輯
若 n 為正整數,下列程式三個迴圈執行完畢後 a 值將為何?- int a=0, n;
- …
- for (int i=1; i<=n; i=i+1)
- for (int j=i; j<=n; j=j+1)
- for (int k=1; k<=n; k=k+1)
- a = a + 1;
複製代碼
答案是 (D)
若一時間找不到頭緒,可試著帶一個小數字進去,觀察其運作情形,譬如假設 n=3:
i j k
------
1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3
1 3 1
1 3 2
1 3 3
2 2 1
2 2 2
2 2 3
2 3 1
2 3 2
2 3 3
3 3 1
3 3 2
3 3 3
發現帶出來的數可分為三個群聚,假設最下方的群聚為一個單位,則由上而下為 3、2、1 個單位,總共有 (n+1)*n/2 個單位。而每個單位都會執行 n 次,故總共會執行 n*(n+1)*n/2 次。
另一種解法為先遮住最內層的迴圈,即可看出端倪,外層加中層的迴圈總共會執行 (n+1)*n/2 次,而每個最內層的迴圈都會執行 n 次,得解。 |