2

重複の可能性:
小数部分に対するホーナーの再帰アルゴリズム - Java

私は Horne'r Algorithm のプログラムを書いていますが、正直に言うと、再帰の経験はあまりありません。分数のみを受け入れるようにこのメソッドを設定し (整数を受け入れて返す別のメソッドがあります)、基数 'r' から基数 10 に変換された結果を返します。理由はわかりませんが、メソッドはそうではありません最終回を迎えているようです。この問題を修正するために何をする必要があるかについての提案は大歓迎です。

(ex: c = 011, xFinal = 2, i = 2)
Expected answer = .375
Actual answer returned = .75

public static double getHornerFraction(long[] c, int xFinal, int i) {
    if (i == 0) {
        return ((double)c[i])/xFinal; 
    }
    return (getHornerFraction(c, xFinal, i-1) + c[i])/xFinal;
}
4

1 に答える 1

4

あなたが指定したものとあなたが期待するものを見ると、問題はあなたがc間違った方向に配列を歩いているか、そうでなければそれを間違って指定していることだと思います。あなたがやりたいのは、実際には配列をインデックス0からに移動することだと思いますc.length

public static double getHornerFraction(long[] c, int xFinal, int i) {
    if (i == c.length) {
        return 0;
    }
    return (getHornerFraction(c, xFinal, i+1) + c[i])/xFinal;
}

上記の関数をで呼び出すと、c = {0,1,1}, xFinal = 2, i = 0期待どおりの結果が得られるはずです。

于 2012-09-24T18:30:33.123 に答える