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

pattern(k)函数规律识别与递归实现方法咨询

规律解析

拆解给出的示例输出后,可以明确以下递归规律:

  • 基础情况:当k=0或k=1时,结果固定为字符串"1"
  • 递归情况:当k≥2时,pattern(k)由三部分拼接而成:
    1. pattern(k-1)的结果
    2. 连续k个字符"0"
    3. pattern(k-2)的结果

验证所有示例:

  • pattern(2) = pattern(1) + "00" + pattern(0) = "1"+"00"+"1" = "1001" ✔️
  • pattern(3) = pattern(2) + "000" + pattern(1) = "1001"+"000"+"1" = "10010001" ✔️
  • pattern(4) = pattern(3) + "0000" + pattern(2) = "10010001"+"0000"+"1001" = "1001000100001001" ✔️
  • pattern(5) = pattern(4) + "00000" + pattern(3) = "1001000100001001"+"00000"+"10010001" = "10010001000010010000010010001" ✔️
实现思路

基础递归实现

直接按照上述规律编写递归函数,终止条件为k≤1时返回"1":

def pattern(k):
    if k <= 1:
        return "1"
    return pattern(k-1) + "0" * k + pattern(k-2)

优化版(带缓存)

基础递归会重复计算大量子问题(比如pattern(k-2)会被pattern(k)和pattern(k-1)多次调用),用缓存可以避免重复计算,大幅提升大k值场景下的效率:

from functools import lru_cache

@lru_cache(maxsize=None)
def pattern(k):
    if k <= 1:
        return "1"
    return pattern(k-1) + "0" * k + pattern(k-2)

测试验证

运行题目给出的测试代码:

for k in range(0,6):
    print("pattern("+str(k)+"): " + pattern(k))

输出与题目示例完全一致。

内容的提问来源于stack exchange,提问作者Hazem El Sankari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 11:48:18