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

Python实现任意n值的Stern-Brocot Tree生成代码优化问题

Stern-Brocot Tree 通用n值适配方案

原有代码仅针对n=1、n=2的场景硬编码了插入逻辑,没有抽象出通用的构造规则,因此无法适配更大的n值。Stern-Brocot树的每一层迭代本质是在当前序列的每一对相邻分数中间,插入二者的中介分数(分子相加作为新分子,分母相加作为新分母),基于这个规则就能写出通用逻辑。

修改后的可支持任意非负整数n的代码如下:

def stern_brocot(n):
    # 初始化n=0对应的基础序列
    seq = [(0, 1), (1, 1)]
    if n == 0:
        return seq
    # 迭代n次,每次生成对应层级的新序列
    for _ in range(n):
        new_seq = [seq[0]]
        # 遍历所有相邻元素对,依次插入中介分数
        for i in range(1, len(seq)):
            left = seq[i-1]
            right = seq[i]
            mediant = (left[0] + right[0], left[1] + right[1])
            new_seq.append(mediant)
            new_seq.append(right)
        seq = new_seq
    return seq

验证结果完全匹配原有预期:

  • stern_brocot(0) => [(0, 1), (1, 1)]
  • stern_brocot(1) => [(0, 1), (1, 2), (1, 1)]
  • stern_brocot(2) => [(0, 1), (1, 3), (1, 2), (2, 3), (1, 1)]
  • 可正常输出任意非负整数n对应的Stern-Brocot序列结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:51:00