import java.util.function.Function;
class recursion {
int factorial_imp(int i){
if (i==1)
return 1;
else
return i*factorial_imp(i-1);
}
/*
Function<Integer,Integer> factorial_lambda3=(i)->{
if (i==1) return 1;
else return i*(factorial_lambda3.apply(i-1));
}; //error self-reference in initializer
int n=n+1;//error self-reference in initializer
*/
Function<Integer,Integer> factorial_lambda=(i)->1;
int n=1;
public static void main(String[] args) { new recursion();}
public recursion() {
factorial_lambda=(i)->{
if (i==1)
return 1;
else
return i*(factorial_lambda.apply(i-1));
};
n=n+1;
System.out.println(n);
System.out.println(factorial_imp(5));
System.out.println(factorial_lambda.apply(5));
}
}
A Run
2
120
120