阿摩線上測驗 登入

申論題資訊

試卷:113年 - 113 司法特種考試_三等_檢察事務官電子資訊組:程式語言#122108
科目:程式語言
年份:113年
排序:0

題組內容

二、遞迴函式(Recursion)是程式語言常用的解題技巧之一,請回答下列問題:

申論題內容

(一)請說明何謂程式語言的遞迴函式,撰寫遞迴函式需要那些條件? (10 分)

詳解 (共 1 筆)

詳解 提供者:hchungw

遞迴函式(Recursion) 是指在函式的定義中直接或間接地呼叫自己。遞迴是一種解題方法,將一個問題分解為若干個相似的子問題來解決,直到達到基礎情況(Base Case)為止。
撰寫遞迴函式需要具備以下條件:
基礎情況(Base Case): 每個遞迴函式都需要有至少一個基礎情況,用來終止遞迴。基礎情況是最簡單的情況,當滿足這個條件時,函式不再呼叫自己,直接返回結果。這是為了防止遞迴無限執行,導致堆疊溢位(Stack Overflow)。
遞迴呼叫(Recursive Call): 在基礎情況之外,函式應該要呼叫自己處理更小的子問題。每次呼叫時,都應該使問題的規模縮小,以確保最終會到達基礎情況,從而停止遞迴。
收斂條件: 每次遞迴呼叫應該縮小問題的規模或改變狀態,使其逐步逼近基礎情況。這樣可以保證遞迴最終會結束,而不會無限循環。
例如,以下是用 Python 撰寫的一個計算階乘的遞迴函式:
python
複製程式碼
def factorial(n):
    if n == 0:  # 基礎情況
        return 1
    else:
        return n * factorial(n - 1)  # 遞迴呼叫
在這個例子中:
當 n == 0 時,函式返回 1,這是基礎情況。
當 n > 0 時,函式會呼叫自己,並將 n 減少,直到 n == 0 為止。