在先前的文章《PHP迴圈學習九:取得給定兩數間的最大公因數》中,我們介紹了使用while循環語句求給定兩個整數間最大公約數的方法,這次我們來聊聊階乘,介紹一下如何計算一個給定整數N的階乘,有興趣的朋友可以學習了解一下~
首先我們來了解一下什麼階乘?
一個正整數的階乘(factorial)是指所有小於且等於該數的正整數的積。因此,給定整數N的階乘是指:
##1 × 2 × 3×...× (n-1) × n##求階乘很簡單,是剛入門程式設計的同學一定會遇到的程式設計題,有多種實作方法。本文會給大家從for循環、while循環、do-while循環,以及遞歸角度來介紹多種實現階乘的方法。方法1:使用for迴圈實作N的階乘
實作想法:
- 因為求n的階乘,就是求1乘以2乘以3...一直乘到n的積。所以for循環的初始條件可設定為
- i = 1
,限制條件可以是
i 或 <code>i 。 <code>
然後循環體中的就是乘法運算了,將每次循環的i 值相乘,得到一個乘積 -
- 下面來看看實作方法:
<?php header("Content-type:text/html;charset=utf-8"); //第一种方法--for循环 function Factorial($n) { $sum = 1; for ($i = 1; $i <= $n; $i++) { $sum *= $i; } echo "$n 的阶乘为: " . $sum."<br><br>"; } Factorial(5); Factorial(10); Factorial(100); ?>$sum *= $i
語句等價於$sum=$sum*$i
,*=
賦值運算子可以將運算子左邊的變數乘以右邊表達式的值賦給左邊的變數。注意:因為0乘以任何值都是0,所以變數$sum的初始值要為1。 我們來看看輸出結果:
了解了for迴圈實作N的階乘的方法,while迴圈和do-while迴圈的實作方法也就知道的差不多了(它們的實現思維是一樣的)。
<?php
header("Content-type:text/html;charset=utf-8");
//第二种方法--while循环
function Factorial($n) {
$i = 1;
$sum=1;
while($i<=$n){
$sum*=$i;
$i++;
}
echo "$n 的阶乘为: " . $sum."<br><br>";
}
Factorial(1);
Factorial(2);
Factorial(3);
Factorial(11);
?>
輸出結果:
##方法3:使用do-while迴圈實作N的階乘
<?php header("Content-type:text/html;charset=utf-8"); //第三种方法--do while循环 function Factorial($n) { $i = 1; $sum=1; do { $sum *= $i; $i++; } while ($i <= $n); echo "$n 的阶乘为: " . $sum."<br><br>"; } Factorial(2); Factorial(3); Factorial(4); Factorial(10); ?>輸出結果:
比較一下,方法1、方法2與方法3,是不是發現它們很相似!
方法4:使用遞迴實現N的階乘
那麼遞迴是什麼呢?簡單來說,遞歸就是程式呼叫自身、函數不斷引用自身,直到引用的物件已知。構成遞迴需滿足以下兩個條件:
子問題需與原始問題為同樣的事,且更為簡單。- 不能無限制地呼叫本身,必須有一個出口,化簡為非遞歸狀況處理。
- 依照遞歸的思維,階乘可以用如下的公式表示:
f(1) = 1 f(n) = n * f(n-1) {n>1}因此,用PHP 實作遞歸求N階乘的程式碼如下:
<?php header("Content-type:text/html;charset=utf-8"); //第四种方法--递归 function Factorial($n) { $sum=1; if($n <= 1){ return 1; }else{ $sum = $n * factorial($n-1); return $sum; } } echo "2 的阶乘为: " .Factorial(2)."<br><br>"; echo "3 的阶乘为: " .Factorial(3)."<br><br>"; echo "4 的阶乘为: " .Factorial(4)."<br><br>"; echo "10 的阶乘为: " .Factorial(10); ?>輸出結果:
好了就說到這裡了,有其他想知道的,可以點選這個喔。 → →php影片教學
PHP面試題大匯總(收藏)》
以上是如何透過PHP程式計算給定數n的階乘的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文比較了酸和基本數據庫模型,詳細介紹了它們的特徵和適當的用例。酸優先確定數據完整性和一致性,適合財務和電子商務應用程序,而基礎則側重於可用性和

本文討論了確保PHP文件上傳的確保,以防止諸如代碼注入之類的漏洞。它專注於文件類型驗證,安全存儲和錯誤處理以增強應用程序安全性。

本文討論了在PHP中實施API速率限制的策略,包括諸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之類的庫。它還涵蓋監視,動態調整速率限制和手

本文討論了使用password_hash和pyspasswify在PHP中使用密碼的好處。主要論點是,這些功能通過自動鹽,強大的哈希算法和SECH來增強密碼保護

本文討論了OWASP在PHP和緩解策略中的十大漏洞。關鍵問題包括注射,驗證損壞和XSS,並提供用於監視和保護PHP應用程序的推薦工具。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

禪工作室 13.0.1
強大的PHP整合開發環境

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1
好用且免費的程式碼編輯器