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

无循环无itertools的带重复递归排列生成实现求助

实现思路

核心采用递归方案实现,全程没有显式循环,也无需引入任何第三方辅助库:

  • 边界处理:当输入num值为1时,直接返回['a', 'b', 'c'],匹配基础输出要求。
  • 递归逻辑:当num大于1时,先递归调用得到所有长度为num-1的目标字符串集合,分别给该集合中每个字符串拼接前缀a、b、c,再将三部分结果按顺序合并,即可得到长度为num的所有符合要求的字符串。
完整实现代码
def func(num):
    # 递归终止条件
    if num == 1:
        return ['a', 'b', 'c']
    # 拿到长度为num-1的所有结果
    prev_list = func(num - 1)
    # 分别拼接三个前缀后合并结果
    return list(map(lambda x: f'a{x}', prev_list)) + list(map(lambda x: f'b{x}', prev_list)) + list(map(lambda x: f'c{x}', prev_list))
效果验证
  • 当num=1时,返回结果为['a', 'b', 'c'],符合示例要求。
  • 当num=2时,返回结果为['aa', 'ab', 'ac', 'ba', 'bb', 'bc', 'ca', 'cb', 'cc'],和示例输出完全一致。
  • 更长的num取值也会按照相同规则递归生成所有允许重复的排列结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:45:05