有没有人知道如何在python中编写Harmonic Series?
H(n) = 1 + 1/2 + 1/3 + ... + 1/n
注意:我们不允许从预定义模块导入。输出必须是分数形式(最低项)的答案的分子和分母。
哦,我很抱歉。我只是一个初学者。我很抱歉。所以这是我的谐波系列的代码。
n = input("Enter n:")
def harmonic(n):
a=1
b=1
for d in range(2, n+1):
a = a*d+b
b = b*d
return (a,b)
x == max(a,b)%min(a, b)
if x == 0:
y=min(a,b)
return y
else:
y=min(a,b)/x
return y
a=a/y
b=b/y
return (a,b)
print harmonic(n)
出了什么问题?无论我输入什么,输出总是(3,2)..什么错了? :(请帮助..谢谢:)
答案 0 :(得分:3)
没有模块,你需要做的就是自己实现分数加法。此外,要以最低的条件得到结果,您需要实现/获得gcd
函数。
执行a/b + c/d
时,结果(未规范化)为(ad+bc)/bd
。在谐波系列中,注意其中一个分子(在这种情况下为c
)每次为1,因此结果为(ad+b)/bd
。
因此,调用a
当前分子,b
当前分母,d
系列中的下一个分母。伪代码将类似于以下内容。 n
是输入整数。
a
←1 {将从1/1
} b
←1 d
] {从n
到1/2
的所有1/n
,请执行以下操作}
a
←a*d + b
b
←b*d
x
←gcd(a,b)
{Normalization starts here} a
←a/x
b
←b/x
a
,b
)