答案頁 · 12 道題

Python 遞迴練習答案

本頁彙整 Python 遞迴 的 12 道練習。先做練習頁,再回到這裡核對準確答案和原因。

快速答案

本答案頁包含 Python 遞迴 的 4 道選擇題、4 道填空題和 4 道輸出預測題,每題都給出準確答案和簡短解釋。

答案已完整展示,建議先嘗試作答,再用本頁核對。第一次練習最好從互動練習頁開始。

01 · 選擇題

每個遞迴函式都必須有什麼?

  1. 基線條件正確答案
  2. 列表
  3. while 迴圈
  4. 全局變數

答案: 基線條件

為什麼: 沒有基線條件,函式會一直呼叫自己。

02 · 選擇題

這段程式碼會輸出什麼?

def f(n):
    if n == 0:
        return 1
    return n * f(n - 1)
print(f(4))
  1. 24正確答案
  2. 12
  3. 1
  4. 4

答案: 24

為什麼: 遞迴呼叫把 4 * 3 * 2 * 1 相乘,結果是 24。

03 · 選擇題

遞迴函式為什麼會拋出 RecursionError?

  1. 它永遠到不了基線條件正確答案
  2. 它匯入了 math
  3. 它回傳字串
  4. 它使用了太多列表

答案: 它永遠到不了基線條件

為什麼: 每次呼叫都會增加堆疊幀,直到超過 Python 的遞迴限制。

04 · 選擇題

執行結果是什麼?

def fib(n):
    if n < 2:
        return n
    return fib(n - 1) + fib(n - 2)
print(fib(5))
  1. 13
  2. 8
  3. 5正確答案
  4. 3

答案: 5

為什麼: fib(5) 對應序列 0、1、1、2、3、5。

05 · 填空題

補全基線條件。

def factorial(n):
    if n <= 1:
        ____ 1
    return n * factorial(n - 1)
print(factorial(3))

答案: return

為什麼: 基線條件直接回傳 1,不再發起新的呼叫。

06 · 填空題

補全更小的輸入。

def factorial(n):
    if n <= 1:
        return 1
    return n * factorial(n ____ 1)
print(factorial(4))

答案: -

為什麼: factorial(n - 1) 會讓輸入朝基線條件靠近一步。

07 · 填空題

補全空列表的基線值。

def total(items):
    if not items:
        return ____
    return items[0] + total(items[1:])
print(total([1, 2]))

答案: 0

為什麼: 空列表對總和沒有貢獻。

08 · 填空題

補全第二次遞迴呼叫。

def fib(n):
    if n < 2:
        return n
    return fib(n - 1) + fib(n - ____)
print(fib(5))

答案: 2

為什麼: fib(n) 會呼叫 fib(n - 1) 和 fib(n - 2)。

09 · 輸出預測

這段程式列印出什麼?

def fact(n):
    if n <= 1:
        return 1
    return n * fact(n - 1)
print(fact(3))

答案: 6

為什麼: 3 * 2 * 1 等於 6。

10 · 輸出預測

程式碼的輸出結果是什麼?

def total(items):
    if not items:
        return 0
    return items[0] + total(items[1:])
print(total([2, 4, 6]))

答案: 12

為什麼: 遞迴呼叫把 2 + 4 + 6 相加,結果是 12。

11 · 輸出預測

螢幕上會顯示什麼?

def fib(n):
    if n < 2:
        return n
    return fib(n - 1) + fib(n - 2)
print(fib(6))

答案: 8

為什麼: 序列在索引 6 處的值是 8。

12 · 輸出預測

這段程式碼會輸出什麼?

def countdown(n):
    if n == 0:
        return 0
    return 1 + countdown(n - 1)
print(countdown(4))

答案: 4

為什麼: 函式會向零遞迴四次,最終回傳 4。

先試一遍題目

打開 Python 遞迴 練習頁,用即時回饋回答同樣的 12 道題。

練習本課