gpt4 book ai didi

python - 如何退出递归数学公式并仍然得到答案

转载 作者:太空宇宙 更新时间:2023-11-03 19:37:30 27 4
gpt4 key购买 nike

我写了这个Python代码,来自wolfram alpha的代码说它应该返回任何正值的阶乘(我可能在某个地方搞砸了),整数与否:

from math import *

def double_factorial(n):
if int(n) == n:
n = int(n)
if [0,1].__contains__(n):
return 1
a = (n&1) + 2
b = 1
while a<=n:
b*=a
a+= 2
return float(b)
else:
return factorials(n/2) * 2**(n/2) *(pi/2)**(.25 *(-1+cos(n * pi)))

def factorials(n):
return pi**(.5 * sin(n*pi)**2) * 2**(-n + .25 * (-1 + cos(2*n*pi))) * double_factorial(2*n)

问题是,假设我输入 pi 到小数点后 6 位。 2*n 短期内不会变成小数点为 0 的 float ,因此等式为

pi**(.5 * sin(n*pi)**2) * 2**(-n + .25 * (-1 + cos(2*n*pi))) * double_factorial(loop(loop(loop(...)))))

我如何停止递归并仍然得到答案?

我建议在定义中添加索引或其他内容,但问题是,如果代码在到达索引时停止,仍然没有答案可以放回之前的“嵌套”或任何你所说的东西中

最佳答案

您根据 g 定义了 f,并根据 f 定义了 g。但你不只是有一个没有基点来开始递归的循环定义。你还有更糟糕的事情。 f 的定义实际上是 g 的定义的倒置。 f 正是撤销了 g 所做的事情,反之亦然。如果您尝试自己实现 Gamma (即不使用库中已有的 Gamma ),那么您需要使用一个公式,以您知道如何评估的其他方式来表达 Gamma 。仅使用一个公式及其反演是一种几乎无法解决您应用它的任何问题的方法。

关于python - 如何退出递归数学公式并仍然得到答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2747390/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com