递归的定义
函数定义中调用函数自身的方式
两个特性:
- 链条:计算过程存在递归链条
例如,n!=n*(n-1)!,n!与(n-1)!就构成了递归链条 - 基例:基础的实例,存在一个或多个不需要再次递归的基例
例如,当n=0时,我们定义它的值为1这就是一种基例,它与其他的值之间不存在递归关系
递归的实现
函数+分支语句
递归本身是一个函数,需要函数定义方式描述,用函数定义名字,在函数中调用本身。在函数内部,我们要区分哪些是基例,哪些是链条,所以我们要使用一个分支语句对输入参数进行判断,基例和链条,分别编写对应代码
def fact(n):
if n == 0:
return 1
else:
return n*fact(n-1)
我们假设参数的初始值为5,当n等于5,它会返回n*fact(n-1)
也就是执行5×fact(4),但是当前程序并没有运算fact(4),不知道fac