選擇使用哪種方法
-
使用遞迴呼叫:
- 優點:代碼簡潔,直接反映數學上的遞迴定義,易於理解。
- 缺點:當 n 很大時,遞迴深度可能會導致堆棧溢出(stack overflow),且效率較低。
-
不使用遞迴呼叫:
- 優點:效率較高,不會有遞迴深度過大的問題,適合處理較大範圍的 n 值。
- 缺點:代碼可能稍微複雜些,但仍然易於理解。
在實際應用中,通常會根據具體情況選擇使用哪種方法。如果確定 n 的範圍不大且希望代碼簡潔,遞迴方法是個不錯的選擇;如果需要處理大範圍的 n 值,則迴圈方法會更合適。
使用遞迴呼叫
function factorial_recursive(n):
if n == 0: // 基本情況:當 n 等於 0 時,階層為 1
return 1
else: // 遞迴情況:當 n 大於 0 時,計算 n * factorial(n - 1)
return n * factorial_recursive(n - 1)
// 呼叫範例
result = factorial_recursive(5)
// 這將返回 120
不使用遞迴呼叫
function factorial_iterative(n):
result = 1 // 初始化結果為 1
for i = 1 to n: // 從 1 到 n 進行迴圈
result = result * i // 將當前結果乘以當前迴圈變量 i
return result // 返回計算結果
// 呼叫範例
result = factorial_iterative(5)
// 這將返回 120