如何打印字符串的所有排列?代码运行未达预期求助
问题排查与修复
你的代码无法正常输出预期结果的核心原因是未定义变量ch,在递归调用permute(rest, answer + ch)时,ch从未被赋值,程序运行会直接抛出NameError。
错误点分析
在for循环中,你需要取出当前循环索引对应的字符s[i],而非使用未定义的ch。
修复后的代码
def permute(s, answer): if len(s) == 0: print(answer, end=" ") return for i in range(len(s)): left_substr = s[0:i] right_substr = s[i + 1:] rest = left_substr + right_substr # 替换未定义的ch为当前循环对应的字符s[i] permute(rest, answer + s[i]) answer = "" s = "ABC" print("All possible strings are : ") permute(s, answer)
运行结果
执行后会正确输出字符串的所有排列:
All possible strings are : ABC ACB BAC BCA CAB CBA
内容的提问来源于stack exchange,提问作者Harsha Raj
相关产品推荐
相关产品推荐

