1.普通遞歸實現,根據遞歸的通用公式fact(n) = n * fact(n-1)很容易寫出階乘的計算程式碼。
普通遞歸實現的優點在於程式碼比較簡潔,和通用公式一樣的過程使得程式碼容易理解。缺點則在於由於需要頻繁地呼叫自身,需要大量的入棧出棧操作,整體的計算效率不高。
function fact(int $n): int { if ($n == 0) { return 1; } return $n * fact($n - 1); }
2.普通循環實現,有些動態規劃的味道,但由於中間態變數使用頻率低,不需要額外儲存空間。
所以要比一般的動態規劃演算法簡單。普通遞歸法是自頂向下(由n 到1)的計算過程,而普通循環則是自底向上進行計算。
function fact(int $n): int { $result = 1; $num = 1; while ($num <= $n) { $result = $result * $num; $num = $num + 1; } return $result; }
以上就是php中n階乘的實作方法,希望對大家有幫助。