我有这个Python函数:
def main(n,x):
g=0
for i in range(1,n):
g+=((-1)^i)*(x^(2*i+1))/(2*i+1)
return g
print main(3,2)
,我认为应该是86/15时,输出是-6。我的错误在哪里?我想找到x-(x ^ 3)/ 3 +(x ^ 5)/ 5 + ...的n值...
答案 0 :(得分:3)
您当前解决方案的一些问题:
您的乘幂运算符应为**
而不是^
,这是XOR。
您应从0而不是1开始range
(然后第一个乘数为-1**0 = 1
)
将除法中的一个数字更改为浮点数,以避免Python 2中的整数除法。
def main(n, x):
g = 0
for i in range(n):
g += ((-1)**i) * (x**(2*i+1))/float(2*i+1)
return g
答案 1 :(得分:0)
如果您希望得到分数的答案,可以使用:
from fractions import Fraction
def main(n,x):
g=0
for i in range(n):
g+=Fraction(((-1)**i)*(x**(2*i+1)),(2*i+1))
return g
print main(3,2)
它给出输出:
86/15