Для школьного задания мы должны создать запомненную функцию fibonacci
, которая повторно использует рекурсивную реализацию вычисления fibonacci
.
Каков хороший способ спроектировать нашу запомненную функцию так, чтобы она использовала преимущества уже существующей функции? Пока это моя реализация:
Базовый класс:
public int computeFibonacci(int position) {
assertPosition(position);
if (position < 2) {
return 1;
}
return computeFibonacci(position - 1) + computeFibonacci(position - 2);
}
Унаследованный класс:
public int computeFibonacci(int position) {
assertPosition(position);
if (position < 2) {
return 1;
}
if (this.memoizedList.containsKey(position)) {
return this.memoizedList.get(position);
}
int result = super.computeFibonacci(position - 1) + super.computeFibonacci(position - 2);
this.memoizedList.put(position, result);
return result;
}