Я пытался реализовать рекурсию с помощью лямбда-функции в java -8. Имея документацию и ресурсы, найденные в Интернете, я могу выполнить рекурсивный вызов с одним параметром в функции.
См. Фрагмент кода ниже -
private static final IntToLongFunction fact = x -> x == 0 ? 1L : x*MyTestClass.fact.applyAsLong(x-1);
public static void main(String[] args) {
System.out.println(fact.applyAsLong(4));
}
Теперь я пытаюсь получить что-то похожее на приведенный выше фрагмент кода для следующего варианта использования, когда я пытаюсь узнать gcd двух чисел -
// Normal recusive meethod for finding gcd
private static long gcd(long a, long b){
return b == 0 ? a : gcd(b, a%b);
}
Я попытался использовать интерфейс функции для этого, но не повезло с ним.
Функция gcd = (Длинный a, Длинный b) -> b == 0? a: this.gcd.apply (b);
Заранее спасибо за помощь.