У меня есть этот код Python, который я нашел в Интернете и хотел бы знать, как перевести его на Java. Мой вопрос не об алгоритме, а о том, как обрабатывать аргументы функции.
Вот код:
def ternarySearch(f, left, right, absolutePrecision):
#left and right are the current bounds; the maximum is between them
if (right - left) < absolutePrecision:
return (left + right)/2
leftThird = (2*left + right)/3
rightThird = (left + 2*right)/3
if f(leftThird) < f(rightThird):
return ternarySearch(f, leftThird, right, absolutePrecision)
return ternarySearch(f, left, rightThird, absolutePrecision)
Я хотел бы знать, как будет выглядеть определение функции. Например, функция, возвращающая y=x^2+3
, будет выглядеть так:
public static int y(int x){
return x*x+3;
}
но
return ternarySearch(f, leftThird, right, absolutePrecision)
не работает для меня, и я хотел бы знать, что делать.
Обновление:
так, например, у меня есть y = 3 * x + 2, это будет так?
interface MyFunctor {
int myFunction(int x);
}
class MyFunctorImpl implements MyFunctor {
int myFunction(int x) {
return 3*x+2
}
}
как это?