【发布时间】:2016-01-08 14:55:06
【问题描述】:
我有一个如下所示的类:
public abstract class Recursion<X, R> {
protected Recursion<X, R> recursion = this;
public R recurse(@SuppressWarnings("unchecked") X... xs) {
return recursion.recurse(xs);
}
}
private static class LongFib extends Recursion<Long, Long> {
@Override
public Long recurse(Long... x) {
return x[0] <= 2 ? 1 : super.recurse(x[0] - 1) + super.recurse(x[0] - 2);
}
}
现在我必须构建一个方法,为这个方法添加记忆。
Recursion<Long, Long> fib = new LongFib();
DPified.dpIfy(fib); // after calling this method the fib Object should have Memoization implemented.
long actual = fib.recurse(92L);
我知道 memoization 是如何工作的,但我不知道如何拦截方法调用。有什么建议吗?
【问题讨论】:
-
"有人能给我一个解决办法吗?"怎么解决什么?你的斐波那契实现也很奇怪,
Recursion<X, R>的目的是什么? -
这只是一个示例,它应该适用于所有递归方法。添加这不是我的实施它是我的大学之一。
标签: java recursion memoization