-4

有谁知道如何在 python中编写谐波级数?

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)..怎么了??:(请帮忙..谢谢:)

4

1 回答 1

3

如果没有模块,您要做的就是自己实现分数加法。此外,要获得最低限度的结果,您需要实现/获取一个gcd函数。

当你这样做a/b + c/d时,结果(没有标准化)是(ad+bc)/bd。在调和级数中,请注意其中一个分子(c在这种情况下)每次都是 1,因此结果将是(ad+b)/bd

因此,调用序列中a的当前分子、b当前分母和d下一个分母。伪代码将类似于以下内容。n是输入整数。

  1. a← 1 { 将从1/1}开始
  2. b← 1
  3. 对于d[2.. n] { From 1/2to中的所有1/n内容,请执行以下操作}
    1. aa*d + b
    2. bb*d
    3. xgcd(a,b){ 标准化从这里开始 }
    4. aa/x
    5. bb/x
  4. 输出 ( a, b)
于 2013-01-09T14:54:29.670 回答