我寫了這個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作爲其小數浮點數,所以該方程原來是
pi**(.5 * sin(n*pi)**2) * 2**(-n + .25 * (-1 + cos(2*n*pi))) * double_factorial(loop(loop(loop(...)))))
我怎麼會停止遞歸,仍然可以得到答案嗎?我曾建議爲定義添加索引或其他內容,但問題是,如果代碼在到達索引時停止,則仍然無法回覆到之前的「嵌套」或任何您調用的內容他們
也許提供一個指向你所指的Wolfram Alpha頁面的鏈接? – 2010-04-30 20:33:33
只需前往wolframalpha.com並輸入,例如pi!它會給你7.1880827289760327020821943451247587185593017639684371624100 ... – calccrypto 2010-04-30 20:52:31