问题描述
我确信这个问题在过去曾被问过很多,但是我一生都无法理解此功能的发生情况:
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,6] + [4 * [1,6][2]]
return [1,6,24]