020.【递归算法】

1. 递归算法

例如,求n的阶乘(一个正整数的阶乘是所有小于或等于该数的正整数的积,并且0的阶乘为1),利用阶乘的规律计算n的阶乘。具体代码如下:

def factorial(n):                            	# 自定义求n的阶乘函数
    if n == 1:                          		# 判断n=1
        return 1                        		# 返回1结束
    else:                                 		# 递归条件,即n!=1
        return n * factorial(n - 1)          	# 递归求阶乘

number = int(input("请输入一个正整数:"))    		# 输入n的值
result = factorial(number)                  	# 调用阶乘函数
print("%d 的阶乘是 %d" % (number, result))  		# 输出结果

此程序递归的计算过程:
在这里插入图片描述
递归算法在计算机中的存储:
在这里插入图片描述在这里插入图片描述
这种数据结构称为“栈”:它的结构是一个“后进先出”的压入弹出式的数据结构。递归函数在计算机中的存储方式就是使用栈存储。将递归函数放入栈中,它会自动包含所有未完成的函数调用。使用栈结构,我们就不需要追踪每步的递归调用。

注意:栈结构虽然方便,但是由于每个函数调用都需要用一定的内存,因此它需要占用很多的内存空间。如果栈使用的空间很大,就说明有很多函数需要调用,这时可以重新编写代码,将递归结构换成循环结构;

猜你喜欢

转载自blog.csdn.net/qq_42226855/article/details/131231360