Go to the first, previous, next, last section, table of contents.


プログラミング 練習問題 7 解答「4 より大きな調和数」

ここでは異なるワザで調和数を計算し、 ループカウンタ自体が逆数の合計を積算するようにします。 別の変数を使って整数カウンタを保持します。

1:  1          2:  1       1:  .
    .          1:  4
                   .

    1 t 1       1 RET 4      Z ( t 2 r 1 1 + s 1 & Z )

ループ本体は次のように動きます。 まず現時点の調和数を変数 2 にセーブする。 次にその値をスタックから消去するが、for ループ自体はその値を覚えている。 次に変数 1 から回数をリコールし、1 を加え、その逆数を for ループの増分とする。 for ループは「ループカウンタ」をその増分だけ増やし、 ループカウンタが 4 を越えるまで動作を繰返す。

2:  31                  3:  31
1:  3.99498713092       2:  3.99498713092
    .                   1:  4.02724519544
                            .

    r 1 r 2                 RET 31 & +

よって、30番目の調和数が 3.99 であり、 31番目が 4.02 であることが判ります。


Go to the first, previous, next, last section, table of contents.     利用度数