這篇文章主要介紹了php中如何實現(xiàn)n階乘,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)基于成都重慶香港及美國等地區(qū)分布式IDC機(jī)房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)移動服務(wù)器托管報價,主機(jī)托管價格性價比高,為金融證券行業(yè)服務(wù)器托管,ai人工智能服務(wù)器托管提供bgp線路100M獨享,G口帶寬及機(jī)柜租用的專業(yè)成都idc公司。
1、普通遞歸實現(xiàn)
首先是普通遞歸實現(xiàn),根據(jù)遞歸的通用公式 fact(n) = n * fact(n-1) 很容易寫出階乘的計算代碼。普通遞歸實現(xiàn)的優(yōu)點在于代碼比較簡潔,和通用公式一樣的過程使得代碼容易理解。缺點則在于由于需要頻繁地調(diào)用自身,需要大量的入棧出棧操作,整體的計算效率不高。
function fact(int $n): int { if ($n == 0) { return 1; } return $n * fact($n - 1); }
2、普通循環(huán)實現(xiàn)
普通循環(huán)實現(xiàn)有些動態(tài)規(guī)劃的味道,但由于中間態(tài)變量使用頻率低,不需要額外存儲空間,所以要比一般的動態(tài)規(guī)劃算法簡單。普通遞歸方法是自頂向下(由 n 到 1)的計算過程,而普通循環(huán)是自底向上進(jìn)行計算。
function fact(int $n): int { $result = 1; $num = 1; while ($num <= $n) { $result = $result * $num; $num = $num + 1; } return $result; }
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“php中如何實現(xiàn)n階乘”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!