我正在尝试编写一个Python程序,输出使用形成的所有可能的字符串
字符c, a, t, d, o
和g
只使用一次递归。
i = ['c', 'a', 't', 'd', 'o', 'g']
counter = 0
def func(i):
global counter
i[counter], i[counter+1] = i[counter+1], i[counter]
print(i)
if counter != 5:
counter += 1
return func(i)
func(i)
编辑: 抱歉是“不礼貌”,但我只是从书中复制粘贴练习。这只是本书的纯文本。
答案 0 :(得分:4)
不知道你正在尝试与你的一起或如何解决这个问题,抱歉。但这是一种方法。
def words(letters, word=''):
letters or print(word)
for letter in letters:
words(letters - {letter}, word + letter)
words(set('catdog'))
letters or print(word)
只是if not letters: print(word)
的快捷方式。 Python的or
评估左边部分,如果是“真理”,则返回,否则返回正确的部分。所以在这里,如果letters
是真实的,即还有剩余的字母可供使用,那就是它。否则,打印。
这可能有点棘手,但我觉得这很自然。你可能听过“停止或我会开枪!”这句话,对吧?如果这个人停下来,那就是这个。否则,他们将被枪杀。在Python中也是如此。
答案 1 :(得分:0)
这个页面有一些很好的方法(我假设您不能使用itertools模块,所以请忽略这些帖子。)