如何通过PHP程序计算给定数n的阶乘
时间:2021-08-26
来源:互联网
标签:
今天PHP爱好者给大家带来在之前的文章《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。
我们看看输出结果:
了解了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程序计算给定数n的阶乘的详细内容,更多请关注php爱好者其它相关文章!
-
如何注册谷歌账号(谷歌账号注册方法) 怎么跳过手机验证 时间:2025-09-29
-
access数据库8个经典实例 时间:2025-09-29
-
mmc.exe是什么进程 mmc.exe应用程序错误的原因及解决方法 时间:2025-09-29
-
4种基本的编程命名规范介绍(匈牙利命名法、驼峰式命名法、帕斯卡命名法、下划线命名法) 时间:2025-09-29
-
Ghostscript下载、安装教程 Ghostscript命令参数详解 时间:2025-09-29
-
Linux中内存管理NUMA架构详解 时间:2025-09-29
今日更新
-
揭秘网络四大梗:爆笑名场面背后的神转折,一次看懂全网热梗来龙去脉!
阅读:18
-
四大狗贼是什么梗?揭秘网络热词背后的爆笑真相,看完秒懂!
阅读:18
-
四大虐梗是什么梗?揭秘网络最扎心四大名场面,看完泪崩!
阅读:18
-
全境封锁手游需要什么配置-全境封锁手机配置
阅读:18
-
恋与制作人2025中秋节福利情报-登录可获得中秋赠礼
阅读:18
-
燕云十六声跑图长鸣玉获得方法-快速积攒长鸣玉
阅读:18
-
第五人格第四十赛季精华1时装囚徒黎明赋格设计公布
阅读:18
-
元梦之星美团皮肤怎么获取-圆梦美团皮肤获取
阅读:18
-
华夏绘世录中秋活动金秋献瑞明日开启-参与得奖励
阅读:18
-
QQ飞车T车孙悟空有什么特性-孙悟空赛车技能
阅读:18