Python:计算某个数的阶乘

1.用循环的方法实现:

num = int(input())
factorial = 1                   # 1
for i in range(1,num + 1):      # 2
    factorial *= i              # 3
print(factorial)

1.1 这是初始化阶乘,这里的factorial没有实际含义,只是一个变量名
1.2 循环,左闭右开,所以右边的num+1实际上是值循环到num
1.3 factorial *= i拆分开来是factorial = factorial * 1,相当于每次循环都把i乘一下factorial并再次赋值给factorial,最终结果是 一个1 * 2 * 3 * 4 ...的循序一直乘到你的num为止。

2.用递归的方法实现:

def factorial(n):
    if n == 1:                   # 1
        return n
    return n * factorial(n - 1)  # 2
num = int(input())
print(factorial(num))            # 3

2.1 设置一个下限,当n == 1时,返回n,使其不要再执行下面的factorial(n - 1)
2.2 返回 n * factorial(n - 1)factorial(n - 1)为调用自己本身的函数,n - 1为实参,相当于把n进行-1操作,比如输入的num4,那这里的n-1就为3,把3传进factorial再进行计算,就相当于是4 * 3 * 2 * 1
2.3 最后调用factorial函数,括号里面的num为实参,是实际意义上的参数,是一个实际存在的参数,n为形参,形式上的参数,可以理解为数学的X,没有实际的值,括号里面的num传进去才能进行计算,最后再打印出结果。

小结

递归的要求

递归算法所体现的“重复”一般有三个要求:

(1)每次调用在规模上都有所缩小(通常是减半)

(2)是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出作为后一次的输入)

(3)在问题的规模极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模位达到直接解答的大小为条件)无条件递归调用将会成为死循环而不能正常结束。

发布了17 篇原创文章 · 获赞 7 · 访问量 747

猜你喜欢

转载自blog.csdn.net/qq_44168690/article/details/103346800