地特四等申論題
108年
[資訊處理] 程式設計概要
第 三 題
三、請以遞迴(recursive)的方式撰寫下列 Java 程式片斷中的 method sumOfEvens()。sumOfEvens(n)會回傳小於或等於 n 的所有正偶數的總和,例如 sumOfEvens(6)會回傳 12,因為 12 = 2+4+6。sumOfEvens()完成後,必須確保 main()執行後會印出正確結果,不需檢查 n 是否為含零的正整數。(20 分)
public class Problem3
{
public static int sumOfEvens(int x)
{ … }
public static void main(String[] args)
{
System.out.printf("sumOfEvens(0) = %d\n", sumOfEvens(0));
System.out.printf("sumOfEvens(1) = %d\n", sumOfEvens(1));
System.out.printf("sumOfEvens(2) = %d\n", sumOfEvens(2));
System.out.printf("sumOfEvens(10) = %d\n", sumOfEvens(10));
System.out.printf("sumOfEvens(15) = %d\n", sumOfEvens(15));
}
}
執行結果:
sumOfEvens(0) = 0
sumOfEvens(1) = 0
sumOfEvens(2) = 2
sumOfEvens(10) = 30
sumOfEvens(15) = 56
📝 此題為申論題
思路引導 VIP
看到遞迴(Recursion)題目,首先要確立「終止條件(Base case)」與「遞迴步驟(Recursive step)」。此題要求正偶數總和,因此當傳入值小於等於 1 時(範圍內無正偶數)應回傳 0 作為終止條件;若傳入值為偶數,則將該數加上「傳入值減 2」的遞迴結果;若為奇數,則將傳入值減 1 轉為偶數後再進行遞迴。
🤖
AI 詳解
AI 專屬家教
【解題關鍵】掌握程式遞迴的兩大核心要件:「終止條件(Base Case)」與「遞迴步驟(Recursive Step)」。 【解答】 完整的 Java 程式碼實作如下:
▼ 還有更多解析內容