-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ます。調和級数では、分子の 1 つ (cこの場合) が毎回 1 であるため、結果は になります(ad+b)/bd

したがって、a現在の分子、b現在の分母、およびd級数の次の分母を呼び出します。擬似コードは次のようになります。n入力整数です。

  1. a← 1 { から始まり1/1ます }
  2. b← 1
  3. d[2.. ]のすべてについてn{ から1/2まで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 に答える