1 什么是递归?
什么是递归?晦涩难懂而又有学术气息的解释网上到处都有。今天就为大家带来一个‘船新版本’。
相信不少人在各种社交APP上都见过‘禁止套娃’的评论,而什么是套娃呢?套娃其实是俄罗斯是特产的木制玩具,一般由多个相同图案的空心木娃娃一个套一个的组成,一般在六个以上。由此 ‘套娃’这个梗的意思也就清晰了:在各种社交网站或视频下方评论区跟人争论时使用重复类似的语言。
def full_array(List):if len(List)==1:return [List] |
---|
2.遍历列表作为头部,并生成下一个 ‘去头部的列表’ ;
for i in range(len(List)):array=List[:i]+List[i+1:] |
---|
3.对递归后的‘去头部列表’遍历,并与前面所删除的部分相加。
for i in range(len(List)):array=List[:i]+List[i+1:]for ii in full_array(array):Mid=[List[i]]+iiResult.append(Mid) |
---|
完整代码:
def full_array(List):Result=[]if len(List)==1:return [List]else:for i in range(len(List)):array=List[:i]+List[i+1:]for ii in full_array(array):Mid=[List[i]]+iiResult.append(Mid)return Resultprint(full_array([1,2,3])) |
---|
3 总结
递归就是‘套娃’,一层套一层,但必须设置一个结束条件,就像‘套娃’一定会打开最后一个,递归也必须有最后一层,防止无线递归。而一般也规定了递归最大深度,一旦超过栈就会溢出。递归对不同的问题,使用的位置也不同,因此应该学会递归的思想,而不是狭隘地认为自己仅会阶乘运算,就算得上掌握了递归算法。