python - 如何在Python中递归地表达无限嵌套分数

标签 python

我对 python 比较陌生,正在尝试通过近似各种数学常数来提高我对递归的理解。我找到了 e (2.718...) 的无限嵌套分数形式的表达式:2 + 2/(2 + 3/(3 + 4/(4 + 5/...

)

请查看图片:位于以下地址:

https://wikimedia.org/api/rest_v1/media/math/render/svg/98e36faf34d05cb60882518818c7e6c9c7dca5e4

我想找到一种方法来递归地近似该值,但在编写函数的返回行时我不知道从哪里开始。特殊的障碍是,当您深入分数层时,数字会变得更大,因此 f(n - 1) 不能在基本情况为 n == 0 的返回行中使用。任何帮助或建议都将非常有用赞赏!

最佳答案

任何递归函数都需要一个停止条件,以便它最终能够产生结果(即不会无限循环)。

这是一个以迭代次数作为停止条件的示例(您可以使用精度、时间或任何其他方案来使递归停止):

def neperian(n,d=1):
    if d == n : return n
    return max(2,d) + (d+1)/neperian(n,d+1)

print(neperian(10)) # 2.7182818427778273
print(neperian(20)) # 2.7182818284590455

这个收敛速度非常快,因此您早在遇到大量问题之前就可以达到最大浮点精度。

关于python - 如何在Python中递归地表达无限嵌套分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54756598/

相关文章:

python - NoneType 似乎被评估为 True

python - 使用具有 "blackbox"函数的多核

python - Pyramid 中的数据库配置

python - BeautifulSoup - urllib.error.HTTPError : HTTP Error 403: Forbidden

python - 在 python 中将列表转换为 HTML 表格的最简单方法?

javascript - 将属性从 v-for 添加到动态 :style in vuejs

python - 在运行 fit_generator 时,可以在training_data_generator 中运行 "With tf.Session as sess:"吗?

python脚本在matplotlib inline和QT后端之间切换

python - Elementtree 设置属性顺序

python - 用于 Python 的 MongoDB ORM?