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

使用递归实现字符串的n阶笛卡尔积生成函数求助

修正Python笛卡尔积递归函数的问题

你的代码无法正常运行,核心问题有两个:

  • 边界条件错误:当n=0时,应该返回包含空字符串的列表[''],而不是空字符串。递归过程中需要将当前字符与子问题的每个结果拼接,只有列表才能支持逐个处理元素的操作。
  • 结果类型错误:你当前把所有结果拼接成单个字符串返回,但题目要求返回列表类型的笛卡尔积集合,因此需要通过列表来收集每一个拼接后的结果。

修正后的代码如下:

def product(s, n):
    # 边界条件:n=0时返回含空字符串的列表,作为递归的基础
    if n == 0:
        return ['']
    
    result = []
    for char in s:
        # 递归获取长度为n-1的笛卡尔积列表
        sub_results = product(s, n - 1)
        # 将当前字符与每个子结果拼接,添加到最终列表
        for sub in sub_results:
            result.append(char + sub)
    
    return result

测试示例:
调用product('ab', 3)会返回:
['aaa', 'aab', 'aba', 'abb', 'baa', 'bab', 'bba', 'bbb'],完全符合需求。

递归逻辑说明:
每次递归将问题拆解为「当前字符」与「长度为n-1的笛卡尔积结果」的拼接,通过两层循环遍历所有可能的组合,最终将所有合法组合收集到列表中返回。

内容的提问来源于stack exchange,提问作者F S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:10:39