无法理解递归函数 python

Trouble understand recursion function python

我相信这个问题在过去已经被问过很多次了,但我终其一生都无法理解这个函数中发生了什么:

def myfactorial(n):
    if n == 1: 
        return [1]
    else: 
        return myfactorial(n-1) + [n * myfactorial(n-1)[n-2]]

如果你能帮助我理解这一点,我将不胜感激;我通常理解其他递归函数,但这个让我卡住了。感谢您的帮助。

def myfactorial(n):
    if n == 1: 
        return [1]
    else: 
        return myfactorial(n-1) + [n * myfactorial(n-1)[n-2]]

这可能是使用较小的 n 值最容易可视化的方法

当 n = 2 时,我们跳过 if 并转到 else 循环

return myfactorial(1) + [2 * myfactorial(1)[0]] 
# Then, since if n == 1 we return [1] from myfactorial()
return [1] + [2 * [1][0]]
return [1] + [2]
return [1, 2]

类似地,我们可以对 n = 3 做类似的事情

return myfactorial(2) + [3 * myfactorial(2)[1]]
# Since we know from the above that myfactorial(2) = [1, 2]
return [1, 2] + [3 * [1, 2][1]]
return [1, 2] + [3 * 2]
return [1, 2, 6]

而且,为了利益,n = 4

return myfactorial(3) + [4 * myfactorial(3)[2]]
return [1, 2, 6] + [4 * [1, 2, 6][2]]
return [1, 2, 6, 24]