2

可能重复:
Horner 的小数部分递归算法 - Java

我正在为 Horne'r 算法编写程序,老实说,我对递归没有太多经验。我将此方法设置为仅接受分数(还有另一种方法接受并返回整数),它将返回从基数“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在错误的方向上行走数组或以其他方式错误地指定它。我认为您想要做的实际上是将数组从 index0移动到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 回答