# 设计递归函数:计算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