【发布时间】:2019-02-06 01:36:07
【问题描述】:
我正在做家庭作业,有点卡住了,请帮忙。
我不希望将答案交给我,但如果我能得到一些帮助或提示,我将不胜感激。
我必须创建一个只进行 1 次递归函数调用且没有 for 循环的字谜生成器。
def anagram(st):
if len(st) == 0:
return []
else:
if len(st) > 1:
print(st)
return [st] + [st[0]] + anagram(st[1:])
else:
print("test2",st)
return [st[1:] + st[0]]
ana = anagram('abc')
这是我的结果:['abc', 'a', 'bc', 'b', 'c'] 5
答案应该是:['abc', 'acb', 'bac', 'bca', 'cab', 'cba'] 6
【问题讨论】:
-
你可以简单地使用
permutationsfromitertools:list(map(''.join, (permutations('abc'))))。 -
@LevZakharov 不是重点 - OP 给出了明确的限制,因为这是一项家庭作业,我们必须尊重他们。
-
@LevZakharov 我不允许使用这样的工具。我必须使用 1 个递归函数调用来完成这个任务
-
我的意思是你可以从python文档中查看
permutationsimplementation。 -
你会使用推导式吗?因为完全无循环地做到这一点可能并非易事。