You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何打印字符串的所有排列?代码运行未达预期求助

问题排查与修复

你的代码无法正常输出预期结果的核心原因是未定义变量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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 04:45:40