首頁  >  文章  >  後端開發  >  如何透過PHP程式計算給定數n的階乘

如何透過PHP程式計算給定數n的階乘

青灯夜游
青灯夜游原創
2021-08-13 20:13:418018瀏覽

在先前的文章《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。 我們來看看輸出結果:

如何透過PHP程式計算給定數n的階乘了解了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);
?>
輸出結果:

如何透過PHP程式計算給定數n的階乘##方法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,是不是發現它們很相似! 如何透過PHP程式計算給定數n的階乘

好了另一個重點來了,下面看看遞歸是如何實現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程式計算給定數n的階乘php影片教學

推薦:

PHP面試題大匯總(收藏)

以上是如何透過PHP程式計算給定數n的階乘的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn