本文将简单讲解python计算阶乘的方法:主要实现方法包括利用函数进行递归与循环的封装,还有直接利用循环进行实现这三种。
编译环境:jupyter notebook
1.递归实现阶乘
所谓递归就是指函数自己调用自己,而为了防止一直自我调用导致死循环,所以在进行递归时务必要加入限制条件。
接着就是关于阶乘的计算,阶乘的算法为:
f
(
x
)
=
x
×
(
x
−
1
)
×
(
x
−
2
)
×
⋯
×
1
f\left( x \right) =x\times \left( x-1 \right) \times \left( x-2 \right) \times \cdots \times 1
f(x)=x×(x−1)×(x−2)×⋯×1
即每一项都为前一项的值减1,直至最后一项的值为1.
下面进行代码实现:
def math_dgjc(x):
if x<=1: #设置限制条件
return 1
else:
return math_dxs(x-1)*x #编写阶乘公式
math_dgjc(5)
这里简单说明下每一行,首先是第一行构建函数,函数名的格式为函数名+括号,括号中是你要输入的参数,在本文中为要计算的数,也可以不输入。接着就是关于递归的使用了,因为每一项为前一项的值减1,所以只需要让他不断递减即可。
结果如下:
120
2.循环实现阶乘
递归是让计算过程变现为逐渐减1,这里利用循环使计算过程表现为逐渐加1,同样需要设置循环中止条件,代码如下:
def math_xhjc(x):
a = 1
for i in range(1,x+1): #使递增值不超过原数
a = i*a
return a
math_xhjc(5)
上面的代码中需要注意的是要提前规定变量a的值,以便后期承接阶乘值,如果不事先赋值的话就会因为未知变量赋值而报错,在循环中由于range()函数为左闭右开区间,所以为了取到原值需要1。
结果如下:
120
3.纯循环实现阶乘
这里不采用函数方法进行阶乘计算,下面直接展示代码:
a = 1
for i in range(1,5+1):
a = i*a
print(a)
为了增加程序的可读性对循环上限的格式仍然为x+1的形式。
结果如下:
120