🔁 U2 迴圈・知識點 K06

累加與累乘

用累加、累乘變數把每一輪的結果累積起來

B2-02-Accumulate
練習平台
點標題可以展開或收合

1學習目標

  • 會用累加變數把每一輪的數字加起來。
  • 知道累加變數要在迴圈之前設好初始值,並知道加法從 0、乘法從 1 開始。
  • 會只累加符合條件的那幾輪。
  • 會用累乘變數算連乘的結果。

2概念說明

迴圈會重複做事,但它自己不會「記住」前面算過什麼。想算 1 + 2 + 3 + … + N,就需要一個變數當作存錢筒,每一輪把新的數字放進去:

總和 設為 0                ← 迴圈開始前,存錢筒先清空
i 從 1 數到 N:
    總和 設為 總和 + i     ← 每一輪把 i 加進去
說出 總和                   ← 迴圈結束後才說出答案

這三個位置(迴圈前、迴圈裡、迴圈後)是累加變數最重要的觀念:

位置要做的事放錯會怎樣
迴圈前設定初始值放進迴圈裡:每一輪都被清空
迴圈裡更新累加變數放到迴圈外:只加到一次
迴圈後說出答案放進迴圈裡:每一輪都說一次,輸出太多
💡 在 Blockly 和 Scratch 怎麼寫「總和加 i」?
  • Blockly:「將 總和 設為(總和 + i)」,或是「將 總和 的值加 i」。
  • Scratch:「變數 總和 改變 i」。

3示範題:跟著一步一步做(1 題)

先讀題,再一步一步點開來看。建議每看完一步,就先自己在平台上試著寫寫看。

示範題

1到N加總示範

L2|進階JSL01-D02
輸入一個正整數 N,請計算 1 + 2 + 3 + ... + N 的總和。本題用來示範累加變數的初始化、更新與輸出。
輸入
第一行:一個正整數 N。
輸出
輸出 1 到 N 的總和。
範例1
輸入
5
輸出
15
範例2
輸入
10
輸出
55
第 1 步:讀題,找出輸入和輸出
  • 輸入:一個正整數 N。
  • 輸出:1 + 2 + … + N 的總和。
第 2 步:把問題拆成步驟
詢問並等待 → N
總和 設為 0
i 從 1 數到 N:
    總和 設為 總和 + i
說出 總和
第 3 步:用範例走一次

N = 5 時,每一輪結束後:

第幾輪i總和
開始前-0
第 1 輪11
第 2 輪23
第 3 輪36
第 4 輪410
第 5 輪515

最後說出 15,和範例一樣。

第 4 步:對照範例答案

按「載入範例」,確認三件事:「總和設為 0」在迴圈上面、「總和加 i」在迴圈裡面、「說出總和」在迴圈下面。

⚠️ 常見錯誤
  • 忘了設初始值:總和一開始不是 0,答案就會多出奇怪的數字。
  • 「說出」放進迴圈裡:會依序說出 1、3、6、10、15,而不是只說 15。

4練習題(3 題)

照順序完成這些題目。寫完之後,可以在平台上按「載入範例」和自己的寫法比較。

修復斷橋

L2|進階count-011
這題多了什麼:和示範一樣是累加,只是迴圈改成從 M 數到 N。例如 M = 3、N = 5:3 + 4 + 5 = 12。
看題目內容
勇者需要修復一座斷掉的橋。橋的每一段需要的木材數量等於該段的編號。 現在只需修復從編號M到編號N的這一段區間。 請計算修復這段區間總共需要多少木材?(即計算M+(M+1)+...+N的總和)。 輸入格式 第一行:輸入一個整數M 第二行:輸入一個整數N 程式輸出 M加到N 之值。
範例1
輸入
3
5
輸出
12
範例2
輸入
1
4
輸出
10
💡 需要提示嗎?
和上一題一樣是累加,只是迴圈改從 M 開始、到 N 結束。

偶數日的存款

L2|進階count-009
這題多了什麼:在「總和加 i」外面包一層判斷:i 是偶數才加(i 除以 2 的餘數 = 0)。這是「迴圈 + 條件判斷 + 累加」三個技巧第一次組合在一起。
看題目內容
勇者改變了存錢計畫,他決定「只在偶數日存錢」。 在第 2 天存 2 元,第 4 天存 4 元,第 6 天存 6 元...以此類推。奇數天(1, 3, 5...)則不存錢。 請問到了第 N 天結束(N>1),勇者總共存了多少錢? 輸入格式 第一行:輸入一個整數 N 程式輸出從 1 到 N 之間所有偶數的總和。
範例1
輸入
4
輸出
6
範例2
輸入
7
輸出
12
💡 需要提示嗎?
在迴圈裡先判斷 i 是不是偶數,是偶數才加進總和。

簡化階乘

L2|進階JSL01-P03
這題多了什麼:這次是累乘:乘積 = 乘積 × i。想一想初始值要設多少?如果設成 0,不管乘什麼都是 0,所以累乘的初始值要設成 1。
看題目內容
輸入一個正整數 N,請計算 1 × 2 × 3 × ... × N 的結果。本題用來練習累乘變數與迴圈結構
輸入
第一行:一個正整數 N。
輸出
輸出 N 的階乘結果。
範例1
輸入
4
輸出
24
範例2
輸入
5
輸出
120
💡 需要提示嗎?
累乘的變數初始值要設成 1,不能設成 0,想想看為什麼。

5自我檢核

學完之後,檢查看看你能不能做到這些事。有做不到的,就回到上面對應的地方再看一次。

  • 我知道累加變數的初始值、更新、說出答案分別要放在迴圈前、迴圈裡、迴圈後。
  • 我知道加法的初始值是 0、乘法的初始值是 1,並說得出原因。
  • 我會在迴圈裡先判斷條件,只累加符合條件的數字。
  • 我會用列表的方式,一輪一輪追蹤累加變數的變化。