# 设计递归函数:计算n的阶乘
'''
一、明确问题类型:可以用递归计算
二、设计递归函数步骤
1.确定函数要做什么
阶乘: 数字从大到小,依次相乘的结果.
函数要做的: 问题的递归规律, 设定基准情形, 寻找函数递归关系, 返回值
具体:
阶乘的规律
设定基准情形
寻找递归关系:
分析: 1.操作是什么, 2.子问题的结果 3.组合:操作 + 调用函数自身(收敛参数)
返回值: 组合=操作 + 调用函数自身(收敛参数))
2.基准情形:递归出口/终止条件
基准情形: 1! = 1*1
2! = 2*1
3.寻找递归关系: 大问题拆解= 当前一步操作+子问题的结果
递归关系:
1! = 1*1
2! = 2*1
3! = 3*2*1 = 3*2!
n! = n*(n-1)!
操作: n*
结果: (n-1)! 等于 调用函数本身
组合: n*函数(n-1)
4.验证收敛性: 每次递归调用函数,都向着基准情形收敛,参数在不断缩小,一定能等于基准情形中的值
'''
def Jc(n):
# 阶乘的计算
# 返回值: int
# 形式参数 n : int
if n == 1:
return n*1
else:
l = n*Jc(n-1)
return l
print(Jc(5))
'''
执行步骤分析:
1.n=3时, 进入else ,l = 3*Jc(2),此时需要先计算Jc(2)
1.1 调用jc(2),进入else,l = 2*Jc(1),此时需要先计算Jc(1)
1.1.1 调用jc(1),进入if,返回 1 值
1.2 返回l = 2 = 2*1 'jc(2)的返回'
2.n=3时,返回 l = 3*2
'''
![PixPin_2026-02-03-练习1]()