返回列表 發帖

APCS 觀念題 10510 - 7

本帖最後由 李泳霖 於 2022-6-11 11:07 編輯

若 n 為正整數,下列程式三個迴圈執行完畢後 a 值將為何?
  1. int a=0, n;

  2. for (int i=1; i<=n; i=i+1)
  3.     for (int j=i; j<=n; j=j+1)
  4.         for (int k=1; k<=n; k=k+1)
  5.             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 次,得解。

此帖僅作者可見

TOP

此帖僅作者可見
Vincent

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

返回列表