站長資訊網
        最全最豐富的資訊網站

        如何通過PHP程序計算給定數n的階乘

        在之前的文章《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 <= n 或者 i < n+1

        • 然后循環體中的就是乘法運算了,將每次循環的 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); ?>

        輸出結果:

        如何通過PHP程序計算給定數n的階乘

        對比一下,方法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程序計算給定數n的階乘

        好了就說到這里了,有其他想知道的,可以點擊這個哦。→ →php視頻教程

        推薦:《PHP面試題大匯總(收藏)》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产成人1024精品免费| 国产精品一香蕉国产线看观看| 日韩精品免费视频| 亚洲精品乱码久久久久久按摩 | 欧美jizzhd精品欧美| 国产午夜精品一区二区三区小说| 992tv精品视频tv在线观看| 中日韩产精品1卡二卡三卡| 国产在线精品一区二区不卡麻豆| 欧美精品福利视频| 国产精品毛片一区二区三区| 亚洲日韩欧美制服精品二区| 久久精品国产黑森林| 99九九精品免费视频观看| 91精品欧美综合在线观看| 国内精品人妻无码久久久影院| 在线中文字幕精品第5页| 亚洲国产成人久久精品99| 久久久久久青草大香综合精品| 国产欧美日韩综合精品一区二区三区 | 日本精品一区二区久久久| 国产人成精品综合欧美成人| 99久久国产综合精品成人影院| 九九热精品在线| 国产精品电影网| 99在线精品视频观看免费| 国产精品区一区二区三在线播放| 久久综合精品国产二区无码| 亚洲国产精品嫩草影院在线观看 | 精品人妻伦九区久久AAA片69| 88国产精品欧美一区二区三区| 精品一区二区久久| 国产精品视频免费| 柠檬福利精品视频导航| 久久se精品一区二区| 久久免费精品一区二区| 四虎成人欧美精品在永久在线| 欧美日韩精品一区二区在线播放| 久久这里只精品国产99热| 91人妻人人澡人人爽人人精品| 国产成人久久精品麻豆一区|