快速答案
本答案頁包含 Python 遞迴 的 4 道選擇題、4 道填空題和 4 道輸出預測題,每題都給出準確答案和簡短解釋。
答案已完整展示,建議先嘗試作答,再用本頁核對。第一次練習最好從互動練習頁開始。
每個遞迴函式都必須有什麼?
答案: 基線條件
為什麼: 沒有基線條件,函式會一直呼叫自己。
這段程式碼會輸出什麼?
def f(n):
if n == 0:
return 1
return n * f(n - 1)
print(f(4))答案: 24
為什麼: 遞迴呼叫把 4 * 3 * 2 * 1 相乘,結果是 24。
遞迴函式為什麼會拋出 RecursionError?
答案: 它永遠到不了基線條件
為什麼: 每次呼叫都會增加堆疊幀,直到超過 Python 的遞迴限制。
執行結果是什麼?
def fib(n):
if n < 2:
return n
return fib(n - 1) + fib(n - 2)
print(fib(5))答案: 5
為什麼: fib(5) 對應序列 0、1、1、2、3、5。
補全基線條件。
def factorial(n):
if n <= 1:
____ 1
return n * factorial(n - 1)
print(factorial(3))答案: return
為什麼: 基線條件直接回傳 1,不再發起新的呼叫。
補全更小的輸入。
def factorial(n):
if n <= 1:
return 1
return n * factorial(n ____ 1)
print(factorial(4))答案: -
為什麼: factorial(n - 1) 會讓輸入朝基線條件靠近一步。
補全空列表的基線值。
def total(items):
if not items:
return ____
return items[0] + total(items[1:])
print(total([1, 2]))答案: 0
為什麼: 空列表對總和沒有貢獻。
補全第二次遞迴呼叫。
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)。
這段程式列印出什麼?
def fact(n):
if n <= 1:
return 1
return n * fact(n - 1)
print(fact(3))答案: 6
為什麼: 3 * 2 * 1 等於 6。
程式碼的輸出結果是什麼?
def total(items):
if not items:
return 0
return items[0] + total(items[1:])
print(total([2, 4, 6]))答案: 12
為什麼: 遞迴呼叫把 2 + 4 + 6 相加,結果是 12。
螢幕上會顯示什麼?
def fib(n):
if n < 2:
return n
return fib(n - 1) + fib(n - 2)
print(fib(6))答案: 8
為什麼: 序列在索引 6 處的值是 8。
這段程式碼會輸出什麼?
def countdown(n):
if n == 0:
return 0
return 1 + countdown(n - 1)
print(countdown(4))答案: 4
為什麼: 函式會向零遞迴四次,最終回傳 4。
先試一遍題目
打開 Python 遞迴 練習頁,用即時回饋回答同樣的 12 道題。