遞歸是什麼意思

在電腦科學中,遞歸(Recursion)是一種程式設計技巧,其中一個函式會直接或間接地調用自身。這種技巧允許程式設計師將大型問題轉化為幾個小型的、類似的問題,從而使問題的解決過程更加模組化和可讀。

遞歸函式通常包含以下兩個部分:

  1. 遞歸條件(Base case):這是遞歸調用的終止條件,用來確保函式不會無限期地調用自身。
  2. 遞歸步驟(Recursive step):這是用來將當前問題轉化為一個小型的、類似的問題的步驟,並且通過調用自身來解決這個小型的問題。

例如,考慮一個計算整數階乘的遞歸函式。階乘的遞歸條件是當數字為1時,其階乘結果為1。遞歸步驟則是將數字減1,並計算減1後的數字的階乘。這樣,大數字的階乘就可以通過計算小數字的階乘來得到。

以下是一個計算階乘的遞歸函式示例(使用Python語言):

def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n-1)

在這個例子中,factorial(n) 函式會遞歸調用自身,直到 n 達到1為止,這時函式返回1,然後逐層返回較大的 n 的階乘結果。

遞歸不僅可以用於解決計算問題,還可以用於數據結構的遍歷(如樹和列表)、問題遞歸分解(如漢諾塔問題)等。雖然遞歸函式通常可以通過迴圈來實現,但是遞歸有時可以使代碼更清晰、更簡潔。