在先前的文章《PHP迴圈學習九:取得給定兩數間的最大公因數》中,我們介紹了使用while循環語句求給定兩個整數間最大公約數的方法,這次我們來聊聊階乘,介紹一下如何計算一個給定整數N的階乘,有興趣的朋友可以學習了解一下~
首先我們來了解一下什麼階乘?
一個正整數的階乘(factorial)是指所有小於且等於該數的正整數的積。因此,給定整數N的階乘是指:
##1 × 2 × 3×...× (n-1) × n##求階乘很簡單,是剛入門程式設計的同學一定會遇到的程式設計題,有多種實作方法。本文會給大家從for循環、while循環、do-while循環,以及遞歸角度來介紹多種實現階乘的方法。方法1:使用for迴圈實作N的階乘
實作想法:
,限制條件可以是 i 或 <code>i 。 <code>
<?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迴圈的實作方法也就知道的差不多了(它們的實現思維是一樣的)。
方法2:使用while迴圈實作N的階乘<?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,是不是發現它們很相似!
好了另一個重點來了,下面看看遞歸是如何實現N的階乘的。方法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中文網其他相關文章!