阿摩線上測驗 登入

申論題資訊

試卷:96年 - 96 專技高考_電子工程技師:電子計算機原理#50508
科目:計算機概論、大意(資訊科學概論,電腦常識,電子計算機概論)
年份:96年
排序:0

申論題內容

四、請分別以反覆(iterative)與遞迴(recursive)的程式方式撰寫(定義)階層函式 (factorial function)。階層函式 f(n)=n*(n-1)*…2*1, f(1)=1, n 為正整數。(20 分)

詳解 (共 1 筆)

詳解 提供者:hchungw
Function Factorial_Iterative(n: Integer) -> Integer
    result = 1
    for i = 2 to n do
        result = result * i
    end for
    return result
End Function
 
說明:
這個反覆的方法從 2 開始一直乘到 n,將每個乘積累積在 result 變數中,最終返回 result 的值作為階層的結果。
遞迴(Recursive)階層函式
pseudocode
複製程式碼
Function Factorial_Recursive(n: Integer) -> Integer
    if n == 1 then
        return 1
    else
        return n * Factorial_Recursive(n - 1)
    end if
End Function
 

說明:

這個遞迴方法依據定義,階層 f(n)等於 nnn 乘以 f(n−1),直到 n 等於 1 為止。在遞迴過程中,函式會不斷調用自身來計算 f(n−1),直到達到基礎情況 n=1 時返回 1。然後每個遞迴層次依次返回最終結果。

計算複雜度:

  • 時間複雜度

    • 反覆方法的時間複雜度為 O(n),因為需要執行 n-1 次乘法操作。
    • 遞迴方法的時間複雜度也是 O(n),因為遞迴調用自身 n-1 次。
  • 空間複雜度

    • 反覆方法的空間複雜度為 O(1),因為僅使用一個累積變數來計算結果。
    • 遞迴方法的空間複雜度為 O(n),因為遞迴調用會在每個層次佔用棧空間,直到達到基礎情況。