繁体   English   中英

麻烦理解递归函数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] 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM