在之前的文章《PHP循环学习九:获取给定两数间的最大公因数》中,我们介绍了使用while循环语句求给定两个整数间最大公约数的方法,这次我们来聊聊阶乘,介绍一下如何计算一个给定整数N的阶乘,感兴趣的朋友可以学习了解一下~

首先我们来了解一下什么阶乘?

一个正整数的阶乘(factorial)是指所有小于及等于该数的正整数的积。因此,给定整数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。

我们看看输出结果:

1.png

了解了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);
?>

输出结果:

2.png

方法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);
?>

输出结果:

3.png

对比一下,方法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);
?>

输出结果:

4.png

好了就说到这里了,有其他想知道的,可以点击这个哦。→ →PHP面试题大汇总(收藏)

以上就是如何通过PHP程序计算给定数n的阶乘的详细内容,更多请关注亿码酷站其它相关文章!


如何通过PHP程序计算给定数n的阶乘
—–文章转载自PHP中文网如有侵权请联系ymkuzhan@126.com删除

下载声明:
  • 本站资源如无特殊说明默认解压密码为www.ymkuzhan.com建议使用WinRAR解压;
  • 本站资源来源于用户分享、互换、购买以及网络收集等渠道,本站不提供任何技术服务及有偿服务,资源仅提供给大家学习研究请勿作它用。
  • 赞助本站仅为维持服务器日常运行并非购买程序及源码费用因此不提供任何技术支持,如果你喜欢该程序,请购买正版!
  • 版权声明:
  • 下载本站资源学习研究的默认同意本站【版权声明】若本站提供的资源侵犯到你的权益,请提交版权证明文件至邮箱ymkuzhan#126.com(将#替换为@)站长将会在三个工作日内为您删除。
  • 免责声明:
  • 您好,本站所有资源(包括但不限于:源码、素材、工具、字体、图像、模板等)均为用户分享、互换、购买以及网络收集而来,并未取得原始权利人授权,因此禁止一切商用行为,仅可用于个人研究学习使用。请务必于下载后24小时内彻底删除,一切因下载人使用所引起的法律相关责任,包括但不限于:侵权,索赔,法律责任,刑事责任等相关责任,全部由下载人/使用人,全部承担。以上说明,一经发布视为您已全部阅读,理解、同意以上内容,如对以上内容持有异议,请勿下载,谢谢配合!支持正版,人人有责,如不慎对您的合法权益构成侵犯,请联系我们对相应内容进行删除,谢谢!