我想打孔
[√(1/2+1/2*√1/2)] ---------(P1)
[√(1/2+1/2*√(P1)] ----------(P2)
[√(1/2+1/2*√(P2)]
etc.找出P(N)项
我现在有这个
from math import *
n=eval(input('fjeowijo'))
i=sqrt(1/2+1/2*(sqrt(1/2)))
def P(n):
for i in range(n):
g=sqrt(1/2+1/2*i)
i=sqrt(1/2+1/2*i)
print(g)
P(n)当输入1为n时,结果为0.7071067811865476,仅等于部分“sqrt(1/2)”。为什么?
发布于 2015-10-30 08:52:05
如果您想让它递归执行
def P(n):
if n <= 0:
return 0.5
else:
return sqrt(0.5*(1+sqrt(P(n-1))))它的作用是
>>> P(1)
0.9238795325112867
>>> P(2)
0.9902490907008235
>>> P(3)
0.9987774031336784
>>> P(4)
0.9998471169658009正如@JoshRomRock所指出的,python通常限制递归的最大深度(默认的最大深度取决于平台)。对于CPython,默认限制为1000。
如果您想更改这样的限制,请执行:
import sys
sys.setrecursionlimit(5000)注:在这种情况下,浮点表示提供的精度很可能是计算的最大障碍。有关使用浮点数的更多信息,请参见官方文件。
第二个注意事项:如果P函数将被多次使用和/或在程序代码的多个点中使用,作为库函数,使用追忆实现它是有意义的。有关python中的一些示例,请参见这里。
发布于 2015-10-30 08:46:07
def P(n):
i = 0
g = sqrt(0.5+.5*sqrt(0.5)
while(i < n):
g = sqrt(0.5+0.5*g)
print(g)会不会是你要找的?
https://stackoverflow.com/questions/33431738
复制相似问题