鱼C论坛

 找回密码
 立即注册
查看: 2113|回复: 1

字符串排列递归方法问题

[复制链接]
发表于 2015-9-8 07:42:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. l = []
  2. def ALL(str1):
  3.     for i in str1:
  4.         temp = str1.replace(i, '')
  5.         l.append(i)
  6.         if len(temp)>1:
  7.             ALL(temp)
  8.             del l[-1]
  9.         else:
  10.             result = ''.join(l)+temp
  11.             print(result)
  12.             del l[-1]
  13.             
  14.             
  15. ALL('abc')
复制代码

不太明白 程序的流程
谁能说说
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-9-8 12:34:48 | 显示全部楼层
说一下个人理解:
1. 假如第一次i=='a' , l==['a'] 'abc'  在第4行 变成temp='bc'  len(temp)>1 也就是里面不止1个,循环递归到下一层all(temp),l==['a', 'b']
2. 12行的del 是删除l==['a', 'b']里的最后一个, 然后for循环 i=='c'  再进来的时候是l==['a', 'c']
3. 8行del 是a 开头的递归结束后, l列表里还有'a', 清空列表, 换'b'进来递归, 重复上述步骤

另外,
  1. for i in list(itertools.permutations('abc')):
  2.     print(''.join(i))
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-17 11:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表