如何在Jupyter Notebook中递归生成连分数的LaTeX表达式
递归生成连分数的LaTeX表达式
递归逻辑分析
连分数的嵌套结构天然适配递归实现:
- 终止条件:当列表只剩最后一个元素时,直接返回该元素的字符串形式,作为最内层的基础项。
- 递归步骤:对于长度大于1的列表,取第一个元素作为当前层的整数部分,后续元素组成的子列表递归生成嵌套的分数分母部分;若需自定义分子为列表后续元素,只需调整递归时的元素选取逻辑。
Python递归代码实现
标准简单连分数形式(a₀ + 1/(a₁ + 1/(a₂ + … +1/aₙ)))
def continued_fraction_latex(x): if not x: return "" # 终止条件:只剩最后一个元素 if len(x) == 1: return str(x[0]) # 递归构建嵌套分数 return f"{x[0]} + \\frac{{1}}{{{continued_fraction_latex(x[1:])}}}"
自定义分子的连分数形式(a₀ + a₁/(a₂ + a₃/(a₄ + …)))
如果你的连分数需要用列表后续元素作为分子,可修改为:
def continued_fraction_latex(x): if not x: return "" if len(x) == 1: return str(x[0]) # 取第二个元素作为分子,剩余子列表递归生成分母 return f"{x[0]} + \\frac{{{x[1]}}}{{{continued_fraction_latex(x[2:])}}}"
测试示例
对于列表 x = [1,2,3,4,5]:
- 第一个函数生成的LaTeX字符串为:
1 + \frac{1}{2 + \frac{1}{3 + \frac{1}{4 + \frac{1}{5}}}} - 第二个函数生成的LaTeX字符串为:
1 + \frac{2}{3 + \frac{4}{5}}
在Jupyter Notebook中,可通过from IPython.display import Math后,用display(Math(生成的LaTeX字符串))直接渲染出连分数效果。
注意事项
- LaTeX中的转义字符需处理:
\要写成\\,大括号{}需用{{}}转义,避免生成的字符串解析出错。 - 函数开头增加空列表判断,可避免传入空参数时触发索引错误。
内容的提问来源于stack exchange,提问作者RSW
相关产品推荐
相关产品推荐

