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),因為遞迴調用會在每個層次佔用棧空間,直到達到基礎情況。