无法理解递归函数 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]
我相信这个问题在过去已经被问过很多次了,但我终其一生都无法理解这个函数中发生了什么:
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]