return j(n - 1) * n 这返回的是什么

#python,求10的阶乘
n=10
def j(n):
if n==1:
return 1
return j(n - 1) * n
print(j(n))

返回的j(n-1)*n是什么意思,我没绕明白,求解救,想知道这个函数是怎么运行的

  1. 递归函数的定义:函数直接或间接的调用函数本身,则称该函数为递归函数。也就是说,如果在一个函数内部,调用自身本身,那么这个函数就称为递归函数。
  2. 计算阶乘的算法就用到了递归函数,func(n)= n * func(n-1)
    就是 j(n)返回的时候返回的是nj(n-1),j(n-1)返回的就是j(n-2)(n-1),然后就这个一直下去,直到n=1的时候,返回1,停止了递归。
    j(n) ---- > j(n-1)n ---- > j(n-2)(n-1)n ---- > j(n-3)(n-2)(n-1)n ---- .... ----->1(n-n+2)...(n-1)n
  3. N! = N(N-1)(N-2)(N-3)...(2)(1) = N(N-1)!

递归,阶乘

N! = (N-1)! * N,就这个意思

这就是递归的用法,当n不等于1时,直接进入return j(n-1)*n ,实际上你可以这么理解
假如传递了一个不等于1的数,就把这个数分为两个部分,第一部分是n ,第二部分是 j(n-1),而这两个部分是相乘的关系
在第二部分中,可以继续拆解,拆解为n-1 j(n-2)两个部分,他们也是相乘的关系,与上面结合看,那就是n * n-1 * j(n-2)
那么一直递归下去,一直到n=1的时候,不再往下递归了,整个过程也就变成了
n * n-1 * n-2 ..... * 2 * 1
也就是阶乘关系
望采纳!谢谢