可能重复:
Horner's recursive algorithm for fractional part - 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;
}
答案 0 :(得分: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
调用上述函数,它应该给出您期望的结果。